CN1162769C - 在保护模式下直接存取海量存储器的方法 - Google Patents
在保护模式下直接存取海量存储器的方法 Download PDFInfo
- Publication number
- CN1162769C CN1162769C CNB01102982XA CN01102982A CN1162769C CN 1162769 C CN1162769 C CN 1162769C CN B01102982X A CNB01102982X A CN B01102982XA CN 01102982 A CN01102982 A CN 01102982A CN 1162769 C CN1162769 C CN 1162769C
- Authority
- CN
- China
- Prior art keywords
- vxd
- test
- massage storage
- protected mode
- direct access
- 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.)
- Expired - Fee Related
Links
Images
Abstract
一种在保护模式下直接存取主储存体的方法,通过动态虚拟设备驱动程序(dynamic VxD)实现在保护模式下直接存取主储存体的方法,系透过向VxD发送读写硬盘的命令,并将要读取的扇区的位置与要读取的扇区的数目作为参数传给VxD,即可读出硬盘上特定位置的数据,然后再向VxD发送写命令,并将扇区的位置与要写入的扇区数目作为参数传递至VxD,即可将数据写入硬盘的特定扇区。
Description
技术领域
本发明涉及在保护模式下直接存取海量存储器的方法,特别是通过动态虚拟设备驱动程序(dynamic virtual device driver;dynamicVxD)实现在保护模式下直接存取海量存储器的方法。
背景技术
当前在计算机的生产流程中,质量控制(QC)是一个重要的环节,而实现实现计算机产品的质量检测的自动化,则是提高生产效率的有效措施,因此各种用于计算机部件检测的软件在生产线上被广泛的使用,当前的测试软件要求执行于视窗平台,同时,为确保测试的可靠性,要求跳过操作系统直接对硬件进行操作,于是,对测试软件提出了新的要求。
目前在视窗操作系统下开发的普通应用程序,在对于硬件设备,特别是类似于硬盘、CD-ROM等储存设备进行存取时,皆是采用操作系统所提供的应用程序接口(API)的方法,而没有采用在DOS下较常见的硬件I/O方式,主要在于:
1.视窗操作系统对于储存设备的存取操作提供了比较丰富与完整的接口,应用程序没有必要去实现这些操作。
2.另一方面在视窗保护模式系统中,操作系统对于执行海量存储器(Mass Storage)存取的I/O接口作了保护,在这多任务环境下是绝对必要的,因为必须协调多个设备对海量存储器的存取,但对于想对硬件设备直接进行操作的程序,操作系统对于执行海量存储器存取的I/O接口所作的保护,却成了该程序欲对硬件设备直接进行操作的主要障碍,在视窗下如果试图对海量存储器的I/O接口直接存取,必然导致系统报告保护错误。
发明内容
因此,为了实现常规下无法实现的一些功能,一种在视窗下直接对海量存储器进行操作的方法就显得个格外的重要。
本发明主要的目的是通过动态虚拟设备驱动程序(dynamic VxD)实现对海量存储器的直接操作,并且可以保证系统对其其进行的操作不会发生冲突,亦即在视窗系统保护模式下直接存取海量存储器的方法,该方法至少包含下列步骤:
该当测试模块收到测试要求时,依据设计者定义,测试模块将该测试转为对VxD的使用命令编码;接著测试程序填写一个向VxD传送测试参数的数据结构;并通过应用程序接口(API)函数(DeviceIoControl),以通知VxD执行相应测试命令;此时VxD执行相应测试命令并返回执行结果;最后接收VxD返回的数据并通知使用者该测试项测试的结果,以完成在保护模式下直接存取海量存储器的流程。
根据本发明的一个方面,提供一种在保护模式下直接存取海量存储器的方法,以实现在视窗下的直接I/O操作,该方法至少包含下列步骤:
提供一测试模块用以接收测试要求;
通过该测试模块将该测试要求转为对VxD的使用命令编码;
通过一测试程序填写一个向该VxD传送测试参数的数据结构;
通过应用程序接口,利用DeviceIoControl函数通知该VxD执行相应测试命令;
该VxD执行该相应测试命令并返回执行结果;及
接收该VxD返回的执行结果,并显示该该测要求的测试结果。
根据本发明的另一个方面,提供一种在保护模式下直接存取海量存储器的方法,以实现在视窗下的直接I/O操作,该方法至少包含下列步骤:
提供一测试模块用以接收读写该海量存储器的命令;
将该命令作为参数传给VxD,以读出该海量存储器上特定位置的数据;
通过一测试程序向该VxD发送写入命令;
通过应用程序接口,利用DeviceIoControl函数通知该VxD执行该写入命令;及
该VxD执行该写入命令并返回执行结果。
附图说明
有关本发明的详细内容及技术配合附图说明如下,其中:
图1说明本发明的功能模块及接口方块图;及
图2说明本发明的测试过程的流程图。
标号说明
101一般应用程序
102应用程序接口(API)
103系统程序的VxD
104硬件设备接口
105海量存储器
106测试程序模块
107测试程序的VxD
步骤201测试模块收到测试要求
步骤202测试模块将该测试转为对VxD的使用命令编码(设计者定义)
步骤203测试程序填写一个向VxD传送测试参数的数据结构
步骤204通知VxD执行相应测试命令
步骤205VxD执行相应测试命令并返回执行结果
步骤206接收VxD返回的数据并通知使用者该测试项测试的结果
具体实施方式
本发明提出一种在保护模式下直接存取海量存储器的方法,且可以保证系统对其进行的操作不会发生冲突。而为了实现在视窗下的直接I/O操作,必须解决两个问题:
1.必须获得系统的RING 0特权;及
2.必须解决与其他应用程序冲突的问题。
就Intel的x86系列处理器而言,在保护模式下共有四个特权级(Rings Privilege,如RING 0、RING 1、RING 2及RING 3),不同RINGS提供不同形式的保护与不同阶层的特权,其分别代表了对储存设备的不同权限。而RING x是指操作系统的架构像一圈圈的同心圆,最内部是核心(kernel)部份,称RING 0,而愈外面的RING是愈接近用户层(user1evel),而RING x是x86架构的设计,不是指操作系统,大多数的CPU都只有分特权模式和一般模式,而x86则分成RING 0-RING 3四个模式,但一般操作系统为了跨平台考虑,也仅用RING 0和RING 3,RING1和RING 2就如x86保护模式(protected mode),虽然有,但很少人使用。
所以,视窗操作系统使用两个级别:操作执行于RING 0及应用程序执行于RING 3,且只有RING 0的程序才有权限对海量存储器进行直接I/O操作,视窗操作系统不支援应用程序对硬件的直接I/O操作但在视窗操作系统中有一类特殊的程序,即虚拟设备驱动程序(virtualdevice driver;VxD),此VxD能执行于RING 0特权级,可执行一切操作系统的工作,视窗操作系统设计VxD的目的是为了提供一种在不透过应用程序,而能共享同一种外部设备的机制,亦即,可利用自己的VxD取代系统所提供的VxD,如此即能接管海量存储器的控制权。
为防止在对海量存储器进行直接操作时,与其他应用程序冲突的问题,必须保证在对海量存储器进行的每一次操作过程不被打断,这样要求每次对海量存储器的操作都要在VxD的内部完成,而使用VxD的应用程序只是将要进行的操作以参数方式传递给VxD并接收其结果。
视窗操作系统根据VxD载入的时间,将其区分为动态(dynamic VxD)和静态(static VxD)两种。虚拟机器管理器(Virtual MachineManager;VMM)在视窗操作系统启动的时候载入static VxD,并在此视窗操作系统的使用期间,将它们一直保留在虚拟存储器中。至于dynamic VxD,是应某个程序或某个VxD的要求,以动态的方式被载入。在一个视窗操作系统的使用期间,dynamic VxD可以反覆多次的被卸载(unloaded)再被重新载入(reloaded)。
一般规则是:如果VxD系用来搭配某个硬件装置或某个应用程序,通常会被设计为动态;如果它是VMM的核心元件(包括VMM自己),则会被设计为静态。static VxD的生命周期可以概述如下。VMM从registrydatabase或从SYSTEM.INI档中找出那些static VxD需要被载入。真实模式常驻程序,像是TSR utility或MS-DOS驱动程序,也可以″hook″一个中断以要求VMM载入某个特定的static VxD。static VxD会在系统启动时刻收到三个信息:Sys_Critical_Init、Deivce_Init和Init_Complete,分别对应VMM的三个重要阶段。
static VxDs可以内含真实模式初始化程序码,在VMM切换至保护模式之前获得执行文件。当VMM准备终结视窗操作系统,回到真实模式之前,static VxD会收到一系列的停机(shutdown)信息。
至于dynamic VxD,VMM倒是无法自己发现。应用程序或VxD(例如Confiucation Manager或Input/Output Supervisor)可以要求载入一或多个VxDs,并由VXDLDR(一个static VxD)将它们载入。对dynamic VxD来说,有三个重要的信息:Sys_Dynamic_Device_Init、Sys_Dynamic_Device_Exit及W32_DeviceIoControl。当VxD被动态载入至暂存器时,系统向其发送Sys_Dynamic_Device_Init信息,VxD应在此时完成初始化设置,并建立必要的数据结构卸载出暂存器时,系统向其发送Sys_Dynamic_Device_Exit信息,VxD在收到后应清除所作设置,并释放相关数据结构,当应用程序使用应用程序接口(API)函数(DeviceIoControl)与VxD进行通信,系统向VxD发送W32_DeviceIoControl信息,因此,DeviceIoControl函数系为应用程序与VxD联系的重要手段。
经上述VxD的简述后,本发明以一较佳实施例说明本方法的实施步骤,图1说明本发明的功能模块及接口方块图,其中,就习知功能模块而言,包含一般应用程序101、应用程序接口(API)102、系统程序的VxD 103、硬件设备接口104及海量存储器105;本发明更包含一测试程序模块106及测试程序的VxD 107,以直接对海量存储器进行操作,且系统对其进行的操作不会发生冲突。
图2说明本发明的测试过程的流程图,当测试模块收到测试要求时(步骤201),依据设计者定义,测试模块将该测试转为对VxD的使用命令编码(步骤202),接著测试程序填写一个向VxD传送测试参数的数据结构(步骤203),其中,该数据结构系存在于测试程序模块106中,接著使用应用程序接口(API)函数(DeviceIoControl),以通知VxD执行相应测试命令(步骤204),此时VxD执行相应测试命令并返回执行结果(步骤205),最后接收VxD返回的数据并通知使用者该测试项测试的结果(步骤206),以完成在保护模式下直接存取海量存储器的流程。
配合上述较佳实施例的说明,本方法更以一具体的例子说明本方法的优越性:假设欲对计算机硬盘上的某几个扇区进行读写测试,具体要求是将某十个扇区的数据读出,然后写到另外十个扇区中,如果采用一般的方法,使用系统提供的硬盘读写功能,就只能对硬盘上的某个文件进行读写,而文件在硬盘上的具体位置是不确定的,即使针对某个文件读写成功,亦不能确定该文件是在硬盘的那些扇区。
如果采用本发明所提的方法,可以透过向VxD发送读写硬盘的命令,并将要读取的扇区的位置与要读取的扇区的数目作为参数传给VxD,即可读出硬盘上特定位置的数据,然后再向VxD发送写命令,并将扇区的位置与要写入的扇区数目作为参数传递至VxD,即可将数据写入硬盘的特定扇区。
虽然本发明以前述的较佳实施例公开如上,然其并非用以限定本发明,本领域的技术人员在不脱离本发明的精神和范围内可作出多种修改,因此本发明的保护范围当视后附的权利要求书所界定者为准。
Claims (7)
1.一种在保护模式下直接存取海量存储器的方法,以实现在视窗下的直接I/O操作,该方法至少包含下列步骤:
提供一测试模块用以接收测试要求;
通过该测试模块将该测试要求转为对VxD的使用命令编码;
通过一测试程序填写一个向该VxD传送测试参数的数据结构;
通过应用程序接口,利用DeviceIoControl函数通知该VxD执行相应测试命令;
该VxD执行该相应测试命令并返回执行结果;及
接收该VxD返回的执行结果,并显示该检测要求的测试结果。
2.如权利要求1所述的在保护模式下直接存取海量存储器的方法,其中更包含该应用程序接口向该VxD发送W32_DeviceIoControl的信息。
3.如权利要求1所述的在保护模式下直接存取海量存储器的方法,其中该测试要求可以是对该海量存储器的某几个扇区进行读写测试。
4.如权利要求1所述的在保护模式下直接存取海量存储器的方法,其中该使用命令编码系指读写该海量存储器的命令。
5.如权利要求1所述的在保护模式下直接存取海量存储器的方法,其中该测试参数的数据结构系指要读取的该扇区的位置与数目。
6.一种在保护模式下直接存取海量存储器的方法,以实现在视窗下的直接I/O操作,该方法至少包含下列步骤:
提供一测试模块用以接收读写该海量存储器的命令;
将该命令作为参数传给VxD,以读出该海量存储器上特定位置的数据;
通过一测试程序向该VxD发送写入命令;
通过应用程序接口,利用DeviceIoControl函数通知该VxD执行该写入命令;及
该VxD执行该写入命令并返回执行结果。
7.如权利要求6所述的在保护模式下直接存取海量存储器的方法,其中更包含该应用程序接口向该VxD发送W32_DeviceIoControl的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB01102982XA CN1162769C (zh) | 2001-02-12 | 2001-02-12 | 在保护模式下直接存取海量存储器的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB01102982XA CN1162769C (zh) | 2001-02-12 | 2001-02-12 | 在保护模式下直接存取海量存储器的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1369803A CN1369803A (zh) | 2002-09-18 |
CN1162769C true CN1162769C (zh) | 2004-08-18 |
Family
ID=4653093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB01102982XA Expired - Fee Related CN1162769C (zh) | 2001-02-12 | 2001-02-12 | 在保护模式下直接存取海量存储器的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1162769C (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100338600C (zh) * | 2003-01-03 | 2007-09-19 | 宇东科技股份有限公司 | 读取传感器的方法 |
CN101373452B (zh) * | 2007-08-24 | 2010-06-16 | 英业达股份有限公司 | 硬盘读写操作的测试方法 |
-
2001
- 2001-02-12 CN CNB01102982XA patent/CN1162769C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1369803A (zh) | 2002-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8271450B2 (en) | Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory | |
US6326973B1 (en) | Method and system for allocating AGP/GART memory from the local AGP memory controller in a highly parallel system architecture (HPSA) | |
US5953530A (en) | Method and apparatus for run-time memory access checking and memory leak detection of a multi-threaded program | |
US5088033A (en) | Data processing system emulation in a window with a coprocessor and I/O emulation | |
Litzkow et al. | Checkpoint and migration of UNIX processes in the Condor distributed processing system | |
EP2588957B1 (en) | Cooperative memory resource management via application-level balloon | |
US5414848A (en) | Method and apparatus for sharing a common routine stored in a single virtual machine with other virtual machines operating in a preemptive muli-tasking computer system | |
US6275893B1 (en) | Method and apparatus for providing seamless hooking and intercepting of selected kernel and HAL exported entry points in an operating system | |
US20120167043A1 (en) | Virtual Machine Tool Interface For Tracking Objects | |
EP1934762B1 (en) | Apparatus and method for handling dma requests in a virtual memory environment | |
CN1815462A (zh) | 迁移数据页面的方法和装置 | |
US7100003B2 (en) | Method and apparatus for generating data for use in memory leak detection | |
CN1821964A (zh) | 将本机函数内嵌到编译的Java代码中的方法和系统 | |
US5692187A (en) | Shadow mechanism having masterblocks for a modifiable object oriented system | |
CN1991808A (zh) | 用于访客访问存储器映射的设备的方法和装置 | |
US5819306A (en) | Shadow mechanism for a modifiable object oriented system | |
RU2580016C1 (ru) | Способ передачи управления между областями памяти | |
EP1669853A2 (en) | Enabling inter-subsystem resource sharing | |
CN1838078A (zh) | 在数字信号处理器内调换码的方法及系统 | |
US5887190A (en) | System for determining from a command storing in a storage circuit an application program which has initiated the command to determine an input/output device address | |
US5463764A (en) | Method and system for system debugging through a keyboard device driver | |
US6532487B1 (en) | Method and system for managing semaphores in an object-oriented multi-tasking computer system | |
CN1162769C (zh) | 在保护模式下直接存取海量存储器的方法 | |
US8091090B2 (en) | Method for providing scratch registers for use by a virtual-machine monitor | |
CN1151429C (zh) | 图形用户接口中生成全局命中测试数据结构的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20040818 Termination date: 20110212 |