CN104700048B - 一种保护存储设备上数据的方法及装置 - Google Patents

一种保护存储设备上数据的方法及装置 Download PDF

Info

Publication number
CN104700048B
CN104700048B CN201510146242.6A CN201510146242A CN104700048B CN 104700048 B CN104700048 B CN 104700048B CN 201510146242 A CN201510146242 A CN 201510146242A CN 104700048 B CN104700048 B CN 104700048B
Authority
CN
China
Prior art keywords
disk partition
storage device
disk
ejected
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510146242.6A
Other languages
English (en)
Other versions
CN104700048A (zh
Inventor
吉艳敏
宁敢
余和
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510146242.6A priority Critical patent/CN104700048B/zh
Priority claimed from CN201210348366.9A external-priority patent/CN102866964B/zh
Publication of CN104700048A publication Critical patent/CN104700048A/zh
Application granted granted Critical
Publication of CN104700048B publication Critical patent/CN104700048B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种保护存储设备上数据的方法及装置,涉及计算机技术领域,解决了现有技术中存在的无法准确判断存储设备的哪个分区或文件没有读写完成,进而不能使用户在确保存储设备的数据读写完成后移除存储设备,导致存储设备的数据损坏或丢失的问题。所述方法包括:客户端上预置的存储设备监控指令实时检测弹出存储设备的命令;当检测到所述弹出存储设备的命令时,确定将要弹出的磁盘分区;确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有磁盘分区,当检测到其中至少一个磁盘分区处于活动状态时,暂停所述将要弹出的磁盘分区及目标存储设备的弹出操作,提示处于活动状态的磁盘分区的信息以保护该目标存储设备上的数据。

Description

一种保护存储设备上数据的方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种保护存储设备上数据的方法及装置。
背景技术
随着计算机的广泛应用,存储设备变的格外重要。人们利用存储设备在计算机设备与计算机设备之间传输数据,例如人们用USB存储器将一台计算机设备上的数据存入USB存储器,再将USB存储器上的数据存入另一台计算机设备。但是在向存储设备上写入数据或从存储设备上读出数据时,如果操作不当,比如,在对存储设备没有读写结束时,将存储设备从计算机设备上移除,将会导致数据存储错误,严重时可能会导致存储设备上的数据损坏或丢失。
现有技术中,操作系统检测到移除存储设备的请求后,在判断到对存储设备的读写没有完成时,会提示用户设备无法移除,但是并不会给出存储设备的哪个分区或者哪个文件没有读写完成,用户在找不到确切原因后,移除存储设备,可能会造成存储设备上的数据损坏或丢失。如何保护存储设备上的数据,使用户在确保对存储设备的读取结束后再移除存储设备,以保护存储设备上的数据的安全,成为一个待解决的问题。
发明内容
本发明的主要目的在于提供一种保护存储设备上数据的方法及装置,以解决现有技术存在的无法准确判断存储设备的哪个分区或文件没有读写完成,进而不能使用户在确保存储设备的数据读写完成后移除存储设备,导致存储设备的数据损坏或丢失的问题,其中:
一种保护存储设备上数据的方法,包括:
客户端上预置的存储设备监控指令实时检测弹出存储设备的命令;
当检测到所述弹出存储设备的命令时,确定该命令将要弹出的磁盘分区;
确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有磁盘分区,当检测到其中至少一个磁盘分区处于活动状态时,暂停所述将要弹出的磁盘分区及目标存储设备的弹出操作,提示处于活动状态的磁盘分区的信息以保护该目标存储设备上的数据,
其中,所述目标存储设备具有至少两个磁盘分区。
一种保护存储设备上数据的装置,包括:
监控模块,预置在客户端上,用于实时检测弹出存储设备的命令;
目标存储设备确定模块,用于当检测到所述弹出存储设备的命令时,确定该命令将要弹出的磁盘分区;
数据保护模块,用于确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有其他磁盘分区,当检测到其中至少一个磁盘分区处于活动状态时,暂停所述将要弹出的磁盘分区及目标存储设备的弹出操作,提示处于活动状态的磁盘分区的信息以保护该目标存储设备上的数据,
其中,所述目标存储设备具有至少两个磁盘分区。
本发明的方法和装置,通过在客户端上预置监控模块,实时检测弹出存储设备的命令,当检测到所述弹出存储设备的命令时,确定该命令将要弹出的磁盘分区;然后,确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有磁盘分区,当检测到其中至少一个磁盘分区处于活动状态时,暂停所述将要弹出的磁盘分区及目标存储设备的弹出操作,提示处于活动状态的磁盘分区的信息。避免了在存储设备的某些磁盘分区处于活动状态时弹出该存储设备导致的存储设备上的数据损坏或丢失,有效地保护了存储设备上的数据。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明的保护存储设备上数据的方法的流程示意图;
图2为操作系统管理设备的树状结构示意图;
图3为根据本发明的保护存储设备上数据的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图1详细对本发明的技术方案进行阐述。
步骤100,根据预置的存储设备监控程序实时检测弹出存储设备的命令。
本发明的存储设备监控程序通过客户端软件的执行实现,其中,客户端软件执行的程序包括:存储设备监控程序、目标存储设备确定程序、数据保护程序等;客户端为计算机、掌上电脑等。当客户端上的客户端软件启动后,可以实时监控存储设备,客户端软件通过执行存储设备监控程序实时检测弹出存储设备的命令,当检测到用户通过客户端软件操作弹出存储设备时,存储设备监控指令检测到弹出存储设备的命令。
步骤101,当检测到所述弹出存储设备的命令时,确定该命令将要弹出的磁盘分区。
本发明的存储设备包括:移动硬盘、USB存储器等具有存储功能并且可以对存储空间进行分区管理的设备。本实施例以USB存储器为例进行具体说明,也可以是基于其他接口的存储设备。该存储设备在主机上至少具有两个磁盘分区,本实施例中,假设USB存储器设备在主机上具有两个磁盘分区,分别用盘符D和盘符E表示,假设D盘为待弹出的磁盘分区。
操作系统启动后,通常会收集所有的设备数据,并将设备数据写入到注册表中,便于设备管理。其中也包括磁盘数据,在操作系统检测到有存储设备接入或者移除后会实时更新磁盘数据。在设备数据中,每一个存储设备对应一个唯一的序列号,而每一个磁盘分区具有一个唯一的设备号,每一个存储设备可以关联多个磁盘分区,即多个设备号不同的磁盘分区可能对应一个设备序列号,当其中一个磁盘分区弹出时,与该磁盘分区关联的存储设备就会联动弹出。
首先,根据待弹出的磁盘分区生成设备名称。可以采用以下函数:
StringCchPrintf(szDeviceName,ARRAYSIZE(szDeviceName),L"\\\\.\\%c:",byVolLetter),其中,byVolLetter是盘符,szDeviceName为生成的设备名称。
然后,调用文件操作函数打开该设备名称对应的设备,并获得设备句柄。具体实施时,可以调用函数CreateFile()获得设备句柄,如:hDevice=CreateFile(szDeviceName,0,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL),其中,hDevice即为设备的句柄。磁设备的句柄可以作为磁盘分区的唯一标识,获得了设备的句柄,就可以对磁盘分区进行相关操作。
如果计算机设备中还有其他类型的可移除设备,可以通过调用函数DeviceIoControl(hDevice,IOCTL_STORAGE_QUERY_PROPERTY,&spq,sizeof(spq),&buffer,sizeof(buffer),&cbBytesReturned,(LPOVERLAPPED)NULL)来获得设备的属性,存储于spq中,并通过设备的属性判断设备的接口类型是否是USB设备,本申请仅对USB设备进行处理。其中,hDevice为设备句柄。
为了后续操作方便,还可以向该设备句柄发送获取存储设备的设备号的指令,获得该将要弹出磁盘分区的设备号,使用设备号作为磁盘分区的唯一标识。可以通过调用DeviceIoControl()函数实现获得设备号:
DeviceIoControl(hDevice,IOCTL_STORAGE_GET_DEVICE_NUMBER,NULL,0,(LPVOID)&sdn,sizeof(sdn),&cbBytesReturned,(LPOVERLAPPED)NULL),其中,hDevice为设备句柄。获得的D盘的设备号存储在数据结构sdn中。
步骤102,确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有磁盘分区,当检测到其中至少一个磁盘分区处于活动状态时,暂停所述待弹出的磁盘分区及目标存储设备的弹出操作,提示处于活动状态的磁盘分区的信息以保护该目标存储设备上的数据。
操作系统建立的设备数据可以是列表的形式,也可以是树状的结构,本实施例以操作系统采用树状结构来管理设备数据为例。图2是操作系统管理设备的一个树状结构示意图,在这个树状结构中,USB设备由三个磁盘分区,202是USB设备的一个磁盘分区,对应树状结构的叶子节点;201是USB存储设备,对应树状结构的父节点。
以下是一个通过查找操作系统预先建立的管理设备的树状结构来确定该目标存储设备上的所有其他磁盘分区的例子。
第一步,枚举客户端上的所有磁盘分区,建立所有磁盘分区对应的设备节点的集合。调用SetupDiGetClassDevs(pGuidInferface,NULL,NULL,DIGCF_PRESENT|DIGCF_DEVICEINTERFACE)函数,枚举客户端的所有磁盘分区信息,如果SetupDiGetClassDevs()函数的第一个参数为(GUID*)&GUID_DEVINTERFACE_DISK,则可以得到客户端上所有USB存储器上的磁盘分区信息。获得磁盘分区信息存储在pGuidInferface中。
第二步,依次获取所述集合中各设备节点对应的磁盘分区的设备号,确定与将要弹出的磁盘分区的设备号相同的节点为将要弹出的磁盘分区对应的节点,并将该节点的父节点作为目标节点,即将要联动弹出的目标存储设备对应的节点。具体实施时,调用SetupDiEnumDeviceInterfaces(hIntDevInfo,NULL,pGuidInferface,dwIndex,&interfaceData)函数读取集合中的所有节点的信息,获得的节点信息存储在interfaceData中,进一步调用SetupDiGetDeviceInterfaceDetail(hIntDevInfo,&interfaceData,pInterFaceDetailData,cbBytesReturned,&cbBytesReturned,&DeviceInfoData)函数获得各设备节点的详细信息,其中pInterFaceDetailData存储有每一个节点的路径信息;分别调用CreateFile()函数,通过设备路径(pInterFaceDetailData->DevicePath)打开枚举的每一个设备对应的节点,获得该节点对应的磁盘分区的设备句柄;然后,调用DeviceIoControl()函数,控制码设为IOCTL_STORAGE_GET_DEVICE_NUMBER,获得每一个节点对应的设备号。此处获得的每一个设备节点对应的设备号就是相应的磁盘分区的设备号。找到与步骤101中获得的将要弹出磁盘分区的设备号相同的那个节点,就是将要弹出的磁盘分区对应的节点。在树状结构中向上查找,调用CM_Get_Parent()函数获得该节点的父节点,确定该父节点为将要联动弹出的目标存储设备对应的节点,作为目标节点。进一步调用CM_Get_Device_ID()可以获得该目标节点的标识(ID)。
第三步,分别获取客户端上各磁盘分区对应的设备节点的父节点,并将父节点与目标节点相同的节点对应的磁盘分区作为该目标存储设备上的磁盘分区。调用GetLogicalDriveStrings()函数获得计算机上的所有磁盘分区的盘符信息,调用StringCchLength()函数将获得的所有盘符信息写入缓存,等待遍历。分别从缓存中取出每一个盘符信息,调用StringCchPrintf()函数格式化后,生成设备名称;对每一个设备名称,分别调用CreateFile()函数获得所有磁盘分区的设备句柄,然后再调用DeviceIoControl(hDevice,IOCTL_STORAGE_QUERY_PROPERTY,&spq,sizeof(spq),&buffer,sizeof(buffer),&cbBytesReturned,(LPOVERLAPPED)NULL)来获得设备的属性,过滤掉不是USB接口的存储设备,并进一步调用DeviceIoControl()函数获得每一个磁盘分区对应的设备号。重复第一步和第二步中的函数调用,调用流程为:调用SetupDiGetClassDevs()枚举客户端上的所有磁盘分区,建立所有磁盘分区对应的设备节点的集合;顺序调用SetupDiEnumDeviceInterfaces()、SetupDiGetDeviceInterfaceDetail()函数获得每一个设备节点的详细信息;调用CreateFile()函数,通过设备路径(pInterFaceDetailData->DevicePath)打开枚举的每一个设备对应的节点,获得该节点对应的磁盘分区的设备句柄;然后,调用DeviceIoControl()函数获得每一个节点对应的设备号;调用CM_Get_Parent()函数分别获取每一个磁盘分区对应的树状结构中的节点的父节点;并进一步调用CM_Get_Device_ID()根据获得的父节点,得到该父节点的标识。
最后,比较获得的所有磁盘分区对应的节点的父节点和获得的目标节点,确定父节点与目标节点(即将要联动弹出的目标存储设备对应的节点)相同的节点对应的磁盘分区为该目标存储设备上的磁盘分区。磁盘分区对应的节点(叶子节点)的父节点对应该磁盘分区所在的物理存储设备,所以,父节点相同,就说明磁盘分区在同一块物理存储设备(如USB硬盘)上。判断父节点是否相同,可以通过比较父节点的标识实现。
本发明对先获得将要联动弹出的目标存储设备对应的设备节点,还是先获得所有磁盘分区对应的设备节点的父节点不做限定,只要二者在比较之前获得即可。本申请中的函数调用仅仅是一个实施例中的函数调用,在不同的情况下,可以适当的删减和增加函数调用,因此本实施例中列举的函数调用不应视为对本发明的限定。
还可以根据物理磁盘(即存储设备)的序列号,确定该物理磁盘上的其它磁盘分区。
根据磁盘序列号找其他分区。具体步骤为:首先向将要弹出的磁盘分区的设备句柄,即步骤101种获得的句柄,发送获取USB设备序列号指令,得到与将要弹出的磁盘分区联动弹出的目标存储设备的序列号;然后,获得客户端上的所有磁盘分区,并分别获得所有磁盘分区中类型为USB存储设备的待过滤磁盘分区的设备句柄,通过分别向待过滤磁盘分区的设备句柄发送获取USB设备序列号的指令,得到所有待过滤磁盘分区所在的USB设备的序列号。通过调用DeviceIoControl()函数,控制码设为IOCTL_STORAGE_GET__MEDIA_SERIAL_NUMBER可以获得将要弹出的磁盘分区所在的USB硬盘的序列号。可以通过调用GetLogicalDrives()函数获得系统中的所有磁盘分区,该函数的返回值为一个双字节的数,该返回值二进制的最低位为1标识A盘存在,次低位为1表示B盘存在,依此类推。然后,获得所有磁盘分区的类型,根据磁盘分区的类型,进一步过滤掉非硬盘分区(如软驱、光驱),剩下的待过滤磁盘分区为硬盘或移动存储设备的磁盘分区。调用GetDriveType()函数,可以确定磁盘分区的类型,如软驱、光驱、硬盘、USB存储设备等。最后,再过滤掉待过滤磁盘分区中不属于指定物理磁盘的分区,剩下的就是将联动弹出的物理磁盘上的磁盘分区。过滤待过滤磁盘分区中不属于指定物理磁盘的分区,可以对待过滤的磁盘分区分别依次调用步骤101中的StringCchPrintf()、CreateFile()获得待过滤磁盘分区的句柄,然后调用DeviceIoControl()函数,控制码设为IOCTL_STORAGE_GET__MEDIA_SERIAL_NUMBER获得所有待过滤磁盘分区所在的USB硬盘的序列号,将获得每一个待过滤的磁盘分区所在的USB硬盘的序列号与将要弹出的磁盘分区联动弹出的目标存储设备的序列号。序列号相同,说明是同一个USB硬盘。因此,将与D盘(即将要弹出磁盘分区)具有相同的磁盘序列号的磁盘分区作为同一存储设备上的磁盘分区,也是将联动弹出的磁盘分区。
确定将联动弹出的目标存储设备上的所有磁盘分区后,要判断各磁盘分区上是否还有正在使用中的文件,或者尚未关闭的文件,若某个分区上还有正在使用或未关闭的文件,说明该分区仍处于活动状态,应该暂停弹出,否则可能导致数据丢失或文件损坏。当检测到其中至少一个磁盘分区处于活动状态时,暂停所述待弹出的磁盘分区及目标存储设备的弹出操作,提示处于活动状态的磁盘分区的信息以保护该目标存储设备上的数据。具体可以通过弹出提示框,并显示准确的磁盘分区的盘符、在使用中的文件路径实现。也可以在提示的同时,在计算机上备份处于活动状态的磁盘分区上的在使用或未关闭的文件数据,以备恢复。
本发明要解决的技术问题是:如何保护存储设备上的数据,在确保对存储设备的读取结束后,即存储设备不处于活动状态时,再移除存储设备,以保护存储设备上的数据的安全。本发明采用的技术方案是:客户端上预置的存储设备监控指令实时检测弹出存储设备的命令;当检测到所述弹出存储设备的命令时,确定该命令将要弹出的磁盘分区;确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有磁盘分区,当检测到其中至少一个磁盘分区处于活动状态时,暂停所述待弹出的磁盘分区及目标存储设备的弹出操作,提示处于活动状态的磁盘分区的信息以保护该目标存储设备上的数据。
本实施例中列举的仅仅是能够实现本方案的一些函数,本领域的技术人员还可以通过调用其它函数来实现获取磁盘分区、获得磁盘分区的类型、确定磁盘分区的设备号等,本发明对此不作限定。确定该目标存储设备上的所有磁盘分区方法也有很多种,本发明只列举了两个较佳的实施例,不应理解为是对本发明的限定。
相应于本发明的方法,本发明还提供了一种保护存储设备上数据的装置,如图3所示,包括:
监控模块300,预置在客户端设备上,用于实时检测弹出存储设备的命令;
目标存储设备确定模块301,用于当检测到所述弹出存储设备的命令时,确定该命令将要弹出的磁盘分区;
数据保护模块302,用于确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有其他磁盘分区,当检测到其中至少一个磁盘分区处于活动状态时,暂停所述将要弹出的磁盘分区及目标存储设备的弹出操作,提示处于活动状态的磁盘分区的信息以保护该目标存储设备上的数据。
其中,所述确定该命令将要弹出的磁盘分区具体为:根据所述命令中的盘符信息生成将要弹出的磁盘分区的设备名称;调用文件操作函数打开该设备名称对应的设备,获得将要弹出的磁盘分区的设备句柄。
所述确定该命令将要弹出的磁盘分区还可以包括:向将要弹出的磁盘分区的设备句柄发送获取设备号的指令,获取该命令将要弹出的磁盘分区的设备号,将该设备号作为磁盘分区的唯一标识,用于后续操作。
较佳地,所述确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有磁盘分区,进一步包括:枚举客户端上的所有磁盘分区,建立所有磁盘分区对应的设备节点的集合;依次获取所述集合中各设备节点对应的磁盘分区的设备号,确定与将要弹出的磁盘分区的设备号相同的节点为将要弹出的磁盘分区对应的节点,并将该节点的父节点(即将要联动弹出的目标存储设备对应的节点)作为目标节点;分别获取客户端上各磁盘分区对应的设备节点的父节点,并将父节点与目标节点相同的节点对应的磁盘分区作为该目标存储设备上的磁盘分区。
或者,直接通过获得磁盘分区所在的物理磁盘的序列号,确定该目标存储设备上的所有磁盘分区,具体为:向将要弹出的磁盘分区的设备句柄发送获取USB设备序列号指令,得到与将要弹出的磁盘分区联动弹出的目标存储设备的序列号;获得客户端上的所有磁盘分区,并分别获得所有磁盘分区中的类型为USB存储设备的待过滤磁盘分区的设备句柄,通过分别向待过滤磁盘分区的设备句柄发送获取USB设备序列号的指令,得到所有待过滤磁盘分区所在的USB设备的序列号;确定与将要弹出磁盘分区具有相同序列号的磁盘分区为该目标存储设备上的所有磁盘分区。
当检测到其中至少一个磁盘分区处于活动状态时,暂停所述待弹出的磁盘分区及目标存储设备的弹出操作,提示处于活动状态的磁盘分区的信息以保护该目标存储设备上的数据。具体可以通过弹出提示框,并显示准确的磁盘分区的盘符、在使用中的文件路径实现。也可以在提示的同时,在计算机上备份处于活动状态的磁盘分区上的在使用或未关闭的文件数据,以备恢复。本申请对此不作限定。
本申请中的所述目标存储设备为连接于计算机设备的USB接口的移动存储设备,如USB存储器。所述目标存储设备具有至少两个磁盘分区。
本说明书中的各个实施例一般采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块或单元。一般地,程序模块或单元可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。一般来说,程序模块或单元可以由软件、硬件或两者的结合来实现。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块或单元可以位于包括存储设备在内的本地和远程计算机存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其主要思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (9)

1.一种保护存储设备上数据的方法,其特征在于,包括:
根据预置的存储设备监控程序实时检测弹出存储设备的命令;
当检测到所述弹出存储设备的命令时,确定该命令将要弹出的磁盘分区;
确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有磁盘分区,当检测到其中至少一个磁盘分区处于活动状态时,暂停所述将要弹出的磁盘分区及目标存储设备的弹出操作,提示处于活动状态的磁盘分区的信息以保护该目标存储设备上的数据,
其中,所述目标存储设备具有至少两个磁盘分区。
2.根据权利要求1所述的方法,其特征在于,所述确定该命令将要弹出的磁盘分区具体为:
根据所述命令中的盘符信息生成将要弹出的磁盘分区的设备名称;
调用文件操作函数打开该设备名称对应的设备,获得将要弹出的磁盘分区的设备句柄。
3.根据权利要求2所述的方法,其特征在于,
所述确定该命令将要弹出的磁盘分区还包括:向将要弹出的磁盘分区的设备句柄发送获取存储设备的设备号的指令,获取该命令将要弹出的磁盘分区的设备号;
所述确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有磁盘分区,进一步包括:
枚举客户端上的所有磁盘分区,建立所有磁盘分区对应的设备节点的集合;
依次获取所述集合中各设备节点对应的磁盘分区的设备号,确定与将要弹出的磁盘分区的设备号相同的节点为将要弹出的磁盘分区对应的节点,并将该节点的父节点作为目标节点;
分别获取客户端上各磁盘分区对应的设备节点的父节点,并将父节点与目标节点相同的节点对应的磁盘分区作为该目标存储设备上的磁盘分区。
4.根据权利要求2所述的方法,其特征在于,所述确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有磁盘分区,进一步包括:
向将要弹出的磁盘分区的设备句柄发送获取USB设备序列号指令,得到与将要弹出的磁盘分区联动弹出的目标存储设备的序列号;
获得客户端上的所有磁盘分区,并分别获得所有磁盘分区中类型为USB存储设备的待过滤磁盘分区的设备句柄,通过分别向待过滤磁盘分区的设备句柄发送获取USB设备序列号的指令,得到所有待过滤磁盘分区所在的USB设备的序列号;
确定与将要弹出磁盘分区具有相同序列号的磁盘分区为该目标存储设备上的所有磁盘分区。
5.一种保护存储设备上数据的装置,其特征在于,包括:
监控模块,预置在客户端上,用于实时检测弹出存储设备的命令;
目标存储设备确定模块,用于当检测到所述弹出存储设备的命令时,确定该命令将要弹出的磁盘分区;
数据保护模块,用于确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有其他磁盘分区,当检测到其中至少一个磁盘分区处于活动状态时,暂停所述将要弹出的磁盘分区及目标存储设备的弹出操作,提示处于活动状态的磁盘分区的信息以保护该目标存储设备上的数据,
其中,所述目标存储设备具有至少两个磁盘分区。
6.根据权利要求5所述的装置,其特征在于,所述确定该命令将要弹出的磁盘分区具体为:
根据所述命令中的盘符信息生成将要弹出的磁盘分区的设备名称;
调用文件操作函数打开该设备名称对应的设备,获得将要弹出的磁盘分区的设备句柄。
7.根据权利要求6所述的装置,其特征在于,
所述确定该命令将要弹出的磁盘分区,还包括:向将要弹出的磁盘分区的设备句柄发送获取设备号的指令,获取该命令将要弹出的磁盘分区的设备号;
所述确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有磁盘分区,进一步包括:
枚举客户端上的所有磁盘分区,建立所有磁盘分区对应的设备节点的集合;
依次获取所述集合中各设备节点对应的磁盘分区的设备号,确定与将要弹出的磁盘分区的设备号相同的节点为将要弹出的磁盘分区对应的节点,并将该节点的父节点作为目标节点;
分别获取客户端上各磁盘分区对应的设备节点的父节点,并将父节点与目标节点相同的节点对应的磁盘分区作为该目标存储设备上的磁盘分区。
8.根据权利要求6所述的装置,其特征在于,所述确定与将要弹出的磁盘分区联动弹出的目标存储设备上的所有磁盘分区,进一步包括:
向将要弹出的磁盘分区的设备句柄发送获取USB设备序列号指令,得到与将要弹出的磁盘分区联动弹出的目标存储设备的序列号;
获得客户端上的所有磁盘分区,并分别获得所有磁盘分区中的类型为USB存储设备的待过滤磁盘分区的设备句柄,通过分别向待过滤磁盘分区的设备句柄发送获取USB设备序列号的指令,得到所有待过滤磁盘分区所在的USB设备的序列号;
确定与将要弹出磁盘分区具有相同序列号的磁盘分区为该目标存储设备上的所有磁盘分区。
9.一种客户端设备,其特征在于,包括:如权利要求5-8中任一项所述的装置。
CN201510146242.6A 2012-09-18 2012-09-18 一种保护存储设备上数据的方法及装置 Active CN104700048B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510146242.6A CN104700048B (zh) 2012-09-18 2012-09-18 一种保护存储设备上数据的方法及装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201510146242.6A CN104700048B (zh) 2012-09-18 2012-09-18 一种保护存储设备上数据的方法及装置
CN201210348366.9A CN102866964B (zh) 2012-09-18 2012-09-18 一种保护存储设备上数据的方法及装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201210348366.9A Division CN102866964B (zh) 2012-09-18 2012-09-18 一种保护存储设备上数据的方法及装置

Publications (2)

Publication Number Publication Date
CN104700048A CN104700048A (zh) 2015-06-10
CN104700048B true CN104700048B (zh) 2018-03-16

Family

ID=53347148

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510146242.6A Active CN104700048B (zh) 2012-09-18 2012-09-18 一种保护存储设备上数据的方法及装置

Country Status (1)

Country Link
CN (1) CN104700048B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1877550A (zh) * 2006-01-13 2006-12-13 深圳创维-Rgb电子有限公司 电视机嵌入式Linux系统下USB存储设备实现实时热拔插的方法
CN101963931A (zh) * 2009-07-22 2011-02-02 鸿富锦精密工业(深圳)有限公司 可扩展固件接口下的硬盘测试方法
CN102662882A (zh) * 2012-03-30 2012-09-12 奇智软件(北京)有限公司 卸载移动存储设备的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1877550A (zh) * 2006-01-13 2006-12-13 深圳创维-Rgb电子有限公司 电视机嵌入式Linux系统下USB存储设备实现实时热拔插的方法
CN101963931A (zh) * 2009-07-22 2011-02-02 鸿富锦精密工业(深圳)有限公司 可扩展固件接口下的硬盘测试方法
CN102662882A (zh) * 2012-03-30 2012-09-12 奇智软件(北京)有限公司 卸载移动存储设备的方法及装置

Also Published As

Publication number Publication date
CN104700048A (zh) 2015-06-10

Similar Documents

Publication Publication Date Title
US10649838B2 (en) Automatic correlation of dynamic system events within computing devices
US7831795B2 (en) Systems and methods for classifying and transferring information in a storage network
CN101937372B (zh) 异常处理的方法及装置
EP3692442A1 (en) Partial database restoration
CN104903866A (zh) 对事件根本原因的分析予以支援的管理系统以及方法
JP6996812B2 (ja) 分散データベースにおけるデータブロックを処理する方法、プログラム、およびデバイス
CN112214411B (zh) 一种容灾系统测试方法、装置、设备及存储介质
CN103460197A (zh) 计算机系统、文件管理方法以及元数据服务器
CN108255620A (zh) 一种业务逻辑处理方法、装置、业务服务器及系统
CN112528279B (zh) 一种入侵检测模型的建立方法和装置
CN102866964B (zh) 一种保护存储设备上数据的方法及装置
CN110399171A (zh) 一种硬盘管理方法、系统及相关组件
JP4383484B2 (ja) メッセージ解析装置、制御方法および制御プログラム
CN107729217A (zh) 一种数据库异常处理方法和终端
CN107203451A (zh) 用于在存储系统中处理故障的方法及设备
CN104700048B (zh) 一种保护存储设备上数据的方法及装置
WO2023273637A1 (zh) 一种故障检测方法及装置
CN106970851A (zh) 用于分布式文件系统中磁盘检测处理的方法和设备
CN109325005A (zh) 一种数据处理方法和电子设备
CN110795261B (zh) 虚拟磁盘故障的检测方法和装置
CN110019500A (zh) 一种复制组状态监控方法、装置、设备及存储介质
CN104317675A (zh) 应用的容灾处理方法和装置
US20220107875A1 (en) Method and Apparatus for Identifying High Importance Devices of a Consistency Group
CN103645967A (zh) 一种只读快照回滚方法及装置
CN111090491B (zh) 虚拟机任务状态的恢复方法、装置及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220711

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co., Ltd

TR01 Transfer of patent right