JP4345559B2 - Information processing apparatus, information processing method, program, and program recording medium - Google Patents
Information processing apparatus, information processing method, program, and program recording medium Download PDFInfo
- Publication number
- JP4345559B2 JP4345559B2 JP2004119852A JP2004119852A JP4345559B2 JP 4345559 B2 JP4345559 B2 JP 4345559B2 JP 2004119852 A JP2004119852 A JP 2004119852A JP 2004119852 A JP2004119852 A JP 2004119852A JP 4345559 B2 JP4345559 B2 JP 4345559B2
- Authority
- JP
- Japan
- Prior art keywords
- irp
- filter
- access request
- priority
- application
- 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
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
- Management Or Editing Of Information On Record Carriers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Description
本発明は、情報処理装置および情報処理方法、並びにプログラムおよびプログラム記録媒体に関し、特に、例えば、AV(Audio Visual)データなどを、リアルタイムで記録媒体に記録し、再生することができるようにする情報処理装置および情報処理方法、並びにプログラムおよびプログラム記録媒体に関する。 The present invention relates to an information processing apparatus, an information processing method, a program, and a program recording medium, and in particular, information that enables, for example, AV (Audio Visual) data or the like to be recorded and reproduced on a recording medium in real time. The present invention relates to a processing device, an information processing method, a program, and a program recording medium.
近年、例えば、光ディスクに、高ビットレートのAVデータを記録し、再生することが要請されている。 In recent years, for example, it has been required to record and reproduce high bit rate AV data on an optical disc.
そこで、例えば、ビデオデータや、それに付随するオーディオデータなどの複数のデータ系列それぞれを、周期的に、かつ、その境界が光ディスクのセクタ等の境界に一致するように、光ディスクに記録するディスクドライブを本件出願人は先に提案している(例えば、特許文献1参照)。 Therefore, for example, a disk drive for recording a plurality of data series such as video data and accompanying audio data on an optical disk periodically and so that the boundary coincides with the boundary of an optical disk sector or the like. The present applicant has previously proposed (for example, see Patent Document 1).
このディスクドライブによれば、ビデオデータやオーディオデータが、ある程度まとめて、光ディスク上の連続した記録領域に記録されるので、そのまとまったデータを、シークなしで読み書きすることができる。 According to this disk drive, video data and audio data are collected to some extent and recorded in a continuous recording area on the optical disk, and the collected data can be read and written without seeking.
さらに、ビデオデータとオーディオデータとの境界が、光ディスクのセクタの境界に一致するので、1つのセクタに、ビデオデータとオーディオデータとが混在しない。このため、例えば、ビデオデータだけ、またはオーディオデータだけを読み出すことができる。即ち、例えば、ビデオデータだけを必要とするときに、光ディスクから、ビデオデータだけを読み出すことができ、1つのセクタに、ビデオデータとオーディオデータとが混在する場合に比較して、ビデオデータだけを効率良く(高速に)読み出すことができる。オーディオデータについても同様である。 Furthermore, since the boundary between the video data and the audio data matches the boundary between the sectors of the optical disk, the video data and the audio data are not mixed in one sector. For this reason, for example, only video data or only audio data can be read. That is, for example, when only video data is required, only video data can be read from the optical disc, and only video data can be read compared to the case where video data and audio data are mixed in one sector. Data can be read efficiently (at high speed). The same applies to audio data.
本件出願人は、さらに、例えば、光ディスクの記録領域上の所定の大きさ以上の連続した空き領域のうち、直前にデータが記録された記録領域に最も近い位置の空き領域を予約し、その空き領域に、データを記録するディスクドライブも提案している。 The applicant further reserves a free area closest to the recording area in which data was recorded immediately before, for example, among consecutive free areas of a predetermined size or more on the recording area of the optical disc, and the free space is reserved. A disk drive that records data in the area is also proposed.
この場合、理想的には、ある一連のデータは、光ディスク上の連続した記録領域に記録される。従って、データの記録再生時に、シークの発生を抑制することができ、高ビットレートのAVデータを、リアルタイムで光ディスクに記録し、また、光ディスクから高ビットレートのAVデータを、リアルタイムで再生することができる。 In this case, ideally, a series of data is recorded in a continuous recording area on the optical disk. Therefore, it is possible to suppress the occurrence of seek during data recording / playback, and record high bit rate AV data on the optical disc in real time, and play back high bit rate AV data from the optical disc in real time. Can do.
ここで、このように、光ディスクの記録領域上の所定の大きさ以上の連続した空き領域のうち、直前にデータが記録された記録領域に最も近い位置の空き領域を予約し、データを記録することによって、データの記録再生時に生じるシークの発生を抑制したディスクドライブを、以下、適宜、プロフェッショナルディスクドライブという。 Here, among the continuous free areas of a predetermined size or more on the recording area of the optical disc, a free area closest to the recording area in which data was recorded immediately before is reserved and data is recorded. Thus, a disk drive that suppresses the occurrence of seeks during data recording / reproduction will be referred to as a professional disk drive as appropriate.
また、プロフェッショナルディスクドライブによって、データが記録された光ディスクを、以下、適宜、プロフェッショナルディスクという。さらに、プロフェッショナルディスクを、以下、適宜、PD(Professional Disc)と略す。 Further, an optical disc on which data is recorded by a professional disc drive is hereinafter referred to as a professional disc as appropriate. Further, the professional disc is hereinafter abbreviated as PD (Professional Disc) as appropriate.
ところで、最近では、高速なCPU(Central Processing Unit)や、大容量のメモリの低価格化等に伴い、高機能で低価格のコンピュータが実現されている。さらに、そのようなコンピュータにおいて、大容量のAVデータの編集その他の処理を行うアプリケーション(プログラム)(以下、適宜、AVアプリケーションという)も実現されている。 By the way, recently, high-performance and low-cost computers have been realized along with the price reduction of high-speed CPUs (Central Processing Units) and large-capacity memories. Further, in such a computer, an application (program) (hereinafter referred to as “AV application” as appropriate) that performs editing and other processing of large-capacity AV data is also realized.
そして、コンピュータに対して、例えば、内蔵する形で、または外付けの形で、PD ドライブを接続し、AVアプリケーションから、PDドライブにアクセスして、PDに対するAVデータの読み書きを行うことの要請が高まってきている。 Then, there is a request for the computer to connect the PD drive, for example, in an internal form or externally, and access the PD drive from an AV application to read / write AV data to / from the PD. It is increasing.
しかしながら、この場合、PDに対して、AVデータをリアルタイムで読み書きすることが保証されなくなることがある。 However, in this case, it may not be guaranteed that AV data is read from and written to the PD in real time.
即ち、最近のコンピュータでは、一般に、マルチタスクにより、複数のアプリケーションを同時に実行することができる。しかしながら、複数のアプリケーションを同時に実行するといっても、正確には、複数のアプリケーションそれぞれに対応する処理が、時分割で行われるため、例えば、AVアプリケーションがPDにアクセスする前に、他のアプリケーションが、PDにアクセスしていると、AVアプリケーションがPDにアクセスするときに、PDドライブで予定されていないシークが発生する。 That is, in recent computers, generally, a plurality of applications can be executed simultaneously by multitasking. However, even if multiple applications are executed simultaneously, the processing corresponding to each of the multiple applications is performed in a time-sharing manner. For example, before the AV application accesses the PD, other applications When accessing the PD, when the AV application accesses the PD, an unscheduled seek occurs in the PD drive.
また、AVアプリケーションがPDにアクセスしようとするときに、他のアプリケーションが、PDにアクセスしていると、AVアプリケーションは、PDへのアクセスを待たされることになる。 If another application is accessing the PD when the AV application tries to access the PD, the AV application will wait for access to the PD.
このように、PDドライブで予定されていないシークが発生し、あるいは、AVアプリケーションによるPDへのアクセスが待たされると、PDに対して、AVデータをリアルタイムで読み書きすることが困難となる。 As described above, when an unscheduled seek occurs in the PD drive or access to the PD by the AV application is awaited, it becomes difficult to read and write AV data to and from the PD in real time.
本発明は、このような状況に鑑みてなされたものであり、光ディスク等の記録媒体に対するデータの記録または再生を、リアルタイムで行うことができるようにするものである。 The present invention has been made in view of such circumstances, and enables data to be recorded or reproduced on a recording medium such as an optical disc in real time.
本発明の一側面の情報処理装置は、アプリケーションからの記録媒体へのアクセスの要求であるアクセス要求を処理する情報処理装置において、アプリケーションからの前記アクセス要求に対して、特有のプライオリティを設定するプライオリティ設定手段と、前記プライオリティが設定された前記アクセス要求を、キューに記憶させるキュー制御手段と、前記キューに記憶された前記アクセス要求を、前記プライオリティにしたがって処理するアクセス要求処理手段とを備え、前記アクセス要求をフィルタリングし、ファイルシステムドライバに渡すフィルタドライバを前記情報処理装置に実行させることにより、前記情報処理装置を、前記プライオリティ設定手段、前記キュー制御手段、及び、前記アクセス要求処理手段として機能させる情報処理装置である。An information processing apparatus according to an aspect of the present invention is a priority for setting a specific priority for an access request from an application in the information processing apparatus that processes an access request that is a request for access to a recording medium from an application. Setting means; queue control means for storing the access request with the priority set in a queue; and access request processing means for processing the access request stored in the queue according to the priority, By causing the information processing apparatus to execute a filter driver that filters access requests and passes them to a file system driver, the information processing apparatus functions as the priority setting means, the queue control means, and the access request processing means. It is an information processing apparatus.
本発明の一側面の情報処理方法は、アプリケーションからの記録媒体へのアクセスの要求であるアクセス要求を処理する情報処理方法において、アプリケーションからの前記アクセス要求に対して、特有のプライオリティを設定するプライオリティ設定ステップと、前記プライオリティが設定された前記アクセス要求を、キューに記憶させるキュー制御ステップと、前記キューに記憶された前記アクセス要求を、前記プライオリティにしたがって処理するアクセス要求処理ステップとを含み、前記アクセス要求をフィルタリングし、ファイルシステムドライバに渡すフィルタドライバを情報処理装置に実行させることにより、前記情報処理装置に、前記プライオリティ設定ステップ、前記キュー制御ステップ、及び、前記アクセス要求処理ステップを実行させる情報処理装置の情報処理方法である。 An information processing method according to one aspect of the present invention is an information processing method for processing an access request, which is a request for access to a recording medium from an application, and a priority for setting a specific priority for the access request from the application. Including a setting step, a queue control step for storing the access request in which the priority is set in a queue, and an access request processing step for processing the access request stored in the queue according to the priority , By causing the information processing apparatus to execute a filter driver that filters the access request and passes it to the file system driver, the information processing apparatus causes the priority setting step, the queue control step, and the access request processing step to be performed. Tsu is an information processing method for an information processing apparatus to execute the flop.
本発明の一側面のプログラムは、アプリケーションからの記録媒体へのアクセスの要求であるアクセス要求の処理を、コンピュータに行わせるプログラムにおいて、アプリケーションからの前記アクセス要求に対して、特有のプライオリティを設定するプライオリティ設定ステップと、前記プライオリティが設定された前記アクセス要求を、キューに記憶させるキュー制御ステップと、前記キューに記憶された前記アクセス要求を、前記プライオリティにしたがって処理するアクセス要求処理ステップとをコンピュータに実行させるための、前記アクセス要求をフィルタリングし、ファイルシステムドライバに渡すフィルタドライバである。A program according to an aspect of the present invention sets a specific priority for an access request from an application in a program that causes a computer to process an access request that is a request for access to a recording medium from an application. A priority setting step; a queue control step for storing the access request with the priority set in a queue; and an access request processing step for processing the access request stored in the queue according to the priority. A filter driver that filters the access request to be executed and passes the access request to a file system driver.
本発明の一側面のプログラム記録媒体は、アプリケーションからの記録媒体へのアクセスの要求であるアクセス要求の処理を、コンピュータに行わせるプログラムが記録されているプログラム記録媒体において、アプリケーションからの前記アクセス要求に対して、特有のプライオリティを設定するプライオリティ設定ステップと、前記プライオリティが設定された前記アクセス要求を、キューに記憶させるキュー制御ステップと、前記キューに記憶された前記アクセス要求を、前記プライオリティにしたがって処理するアクセス要求処理ステップとをコンピュータに実行させるための、前記アクセス要求をフィルタリングし、ファイルシステムドライバに渡すフィルタドライバであるプログラムが記録されているプログラム記録媒体である。A program recording medium according to one aspect of the present invention is a program recording medium in which a program that causes a computer to process an access request that is a request for access to the recording medium from an application is recorded. A priority setting step for setting a specific priority, a queue control step for storing the access request with the priority set in a queue, and the access request stored in the queue according to the priority. A program recording medium on which is recorded a program that is a filter driver that filters the access request and passes the access request to a file system driver for causing the computer to execute an access request processing step to be processed
本発明においては、アプリケーションからのアクセス要求に対して、特有のプライオリティが設定され、そのプライオリティが設定されたアクセス要求が、キューに記憶される。そして、キューに記憶されたアクセス要求が、プライオリティにしたがって処理される。 In the present invention, a specific priority is set for an access request from an application, and the access request in which the priority is set is stored in a queue. Then, the access request stored in the queue is processed according to the priority.
本発明によれば、あるアプリケーションからのアクセス要求を、優先的に処理することができ、その結果、例えば、データの記録または再生を、リアルタイムで行うことが可能となる。 According to the present invention, an access request from an application can be processed preferentially. As a result, for example, data recording or reproduction can be performed in real time.
以下、図面を参照して、本発明の実施の形態について説明する。 Embodiments of the present invention will be described below with reference to the drawings.
図1は、本発明を適用した情報処理システムの一実施の形態の構成例を示している。 FIG. 1 shows a configuration example of an embodiment of an information processing system to which the present invention is applied.
図1において、情報処理システムは、PC(Personal Computer)1とドライブ2とで構成されている。 In FIG. 1, the information processing system includes a PC (Personal Computer) 1 and a drive 2.
PC1は、OS(Operating System)や、アプリケーション(プログラム)を記憶しており、OSの制御の下、アプリケーションを実行することで、各種の処理を行う。 The PC 1 stores an OS (Operating System) and applications (programs), and performs various processes by executing the applications under the control of the OS.
ドライブ2は、例えば、上述したPD(Professional Disc)ドライブで、1394ケーブル4を介して、PC1と接続されている。ドライブ2は、PDである光ディスク3の着脱が可能となっており、PC1との間で、IEEE(Institute of Electronic and Electronics Engineers)1394の規格に準拠した通信を行うことにより、光ディスク3に対して、AVデータその他のデータの読み書きを行う。 The drive 2 is, for example, the PD (Professional Disc) drive described above, and is connected to the PC 1 via the 1394 cable 4. The drive 2 can be attached to and detached from the optical disk 3 that is a PD, and communicates with the PC 1 in accordance with the IEEE (Institute of Electronic and Electronics Engineers) 1394 standard. Read and write AV data and other data.
なお、ドライブ2は、PDドライブである必要はなく、光ディスクもPDである必要はない。また、PC1とドライブ2との間では、IEEE1394以外の規格に準拠した通信を行うことが可能である。 The drive 2 does not need to be a PD drive, and the optical disc does not need to be a PD. In addition, communication conforming to a standard other than IEEE1394 can be performed between the PC 1 and the drive 2.
次に、図2は、図1のPC1のハードウェア構成例を示している。 Next, FIG. 2 shows a hardware configuration example of the PC 1 of FIG.
PC1は、CPU(Central Processing Unit)12を内蔵している。CPU12には、バス11を介して、入出力インタフェース20が接続されており、CPU12は、入出力インタフェース20を介して、ユーザによって、キーボードや、マウス、マイク等で構成される入力部17が操作等されることにより指令が入力されると、それにしたがって、ROM(Read Only Memory)13に格納されているプログラムを実行する。あるいは、また、CPU12は、ハードディスク15に格納されているプログラム、衛星若しくはネットワークから転送され、通信部18で受信されてハードディスク15にインストールされたプログラム、またはドライブ19に装着されたリムーバブル記録媒体21から読み出されてハードディスク15にインストールされたプログラムを、RAM(Random Access Memory)14にロードして実行する。これにより、CPU12は、後述するフローチャートにしたがった処理、あるいは後述するブロック図の構成により行われる処理を行う。そして、CPU12は、その処理結果を、必要に応じて、例えば、入出力インタフェース20を介して、LCD(Liquid Crystal Display)やスピーカ等で構成される出力部16から出力、あるいは、通信部18から送信、さらには、ハードディスク15に記録等させる。
The PC 1 includes a CPU (Central Processing Unit) 12. An input /
また、PC1においては、入出力インタフェース20に、IEEE1394の規格に準拠した通信制御を行うIEEE1394I/F(InterFace)22が接続されている。IEEE1394I/F22には、1394ケーブル4を介して、ドライブ2が接続されている。CPU12は、バス11、入出力インタフェース20、IEEE1394I/F22、および1394ケーブル4を介して、ドライブ2にアクセスし、そのドライブ2に装着されている光ディスク3に対して、データを読み書きすることができる。
In the
ここで、CPU12は、OSや各種のアプリケーションのプログラムを実行するが、これらのプログラムは、PC1に内蔵されている記録媒体としてのハードディスク15やROM13に予め記録しておくことができる。
Here, the
あるいはまた、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto Optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体21に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体21は、いわゆるパッケージソフトウエアとして提供することができる。
Alternatively, the program is temporarily stored in a
なお、プログラムは、上述したようなリムーバブル記録媒体21からPC1にインストールする他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、PC1に無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、PC1に有線で転送し、PC1では、そのようにして転送されてくるプログラムを、通信部18で受信し、内蔵するハードディスク15にインストールすることができる。
The program is installed on the
次に、図3は、図2のCPU12が実行するプログラムを示す図である。
Next, FIG. 3 is a diagram showing a program executed by the
例えば、OS30、およびアプリケーション31乃至33(のプログラム)が、少なくとも、図2のハードディスク15にインストールされており、CPU12は、PC1の電源がオンにされると、ハードディスク15からRAM14に、OS30をロードして実行する。さらに、例えば、ユーザが入力部17を操作するなどして、アプリケーション31や、32,33の起動を要求すると、CPU12は、ハードディスク15からRAM14に、アプリケーション31や、32,33をロードし、OS30の制御の下で実行する。
For example, the
そして、アプリケーション31乃至33が、例えば、ドライブ2に装着された光ディスク3へのアクセスの要求であるアクセス要求を行うと、OS30は、そのアクセス要求を処理する。これにより、ドライブ2において、アプリケーション31乃至33からのアクセス要求によって記録が要求されたデータが、光ディスク3に記録される。あるいは、ドライブ2において、アプリケーション31乃至33からのアクセス要求によって再生(読み出し)が要求されたデータが、光ディスク3から読み出され、OS30を介して、アクセス要求を行ったアプリケーションに渡される。
When the
なお、図2のハードディスク15にインストールするアプリケーションは、アプリケーション31乃至33の3つに限定されるものではなく、1つや、2つ、4以上であっても良い。
2 are not limited to the three
但し、ここでは、ハードディスク15にインストールされている3つのアプリケーション31乃至33のうちの1つであるアプリケーション33が、外部からのAVデータの取り込みや、AVデータの編集、記録、再生などを行うアプリケーションとなっているものとする。そこで、アプリケーション33を、以下、適宜、AVアプリケーション33ともいう。
However, here, the
AVアプリケーション33は、DLL(Dynamic Link Library)であるPD_API(PD_API.DLL)41を呼び出し、このPD_API41を介して、光ディスク3に対するアクセス要求を行う。PD_API41は、光ディスク3に対するアクセスに関する、後述する固有のAPI(Application Program Interface)を提供するDLLである。
The
次に、OS30としては、例えば、Unix(R)や、Linux、さらには、マイクロソフト社のWindows(R)と呼ばれているもの、その他の任意のOSを採用することができるが、ここでは、例えば、Windows(R)のNT系のOSが採用されている。なお、Windows(R)のNT系のOSとしては、現在、"Windows(R) NT", "Windows(R) 2000", "Windows(R) XP"がある。
Next, as the
図4は、OS30として、Windows(R)のNT系のOSが採用されている場合の、ドライブ2(の光ディスク3)へのアクセスに関する部分のOS30の構成例を示している。
FIG. 4 shows a configuration example of the portion of the
なお、図4では、特に、OS30におけるデバイスドライバのレイヤ(layer)構成を、アプリケーション31乃至33との関係が分かるように示してある。
In FIG. 4, in particular, the layer configuration of the device driver in the
Windows(R)のNT系のOSであるOS30は、マイクロカーネル技術とオブジェクト指向技術をベースとし、各サービスを、サブシステムによって実装している。
An
Win32サブシステム(Win32 SubSystem)51は、サブシステムの1つで、アプリケーション31乃至33に対して、各種のAPI(関数)を提供し、例えば、メモリ管理、プロセス管理、グラフィックス描画などを行う。
The
即ち、Win32サブシステム51は、アプリケーション31乃至33から、例えば、I/O(Input/Output)関係のAPI関数が呼び出されると、そのAPI関数に応じたI/O要求を、NT入出力マネージャ(NT I/O Manager)52に出力する。
That is, for example, when an API function related to I / O (Input / Output) is called from the
なお、Win32サブシステム51が提供するAPI関数としては、例えば、ファイルの生成を行うCreateFile()、ファイル(ファイルに記録されたデータ)の読み出しを行うReadFile()、ファイル(ファイルへのデータ)の書き込みを行うWriteFile()、その他の各種の処理を行うDeviceIoControl()などがある。
Note that API functions provided by the
NT入出力マネージャ52は、レイヤ構造のデバイスドライバ(Device Driver)に対して、IRP(I/O Request Packet)を渡すためのサービスを提供する。
The NT input /
ここで、IRPは、デバイスドライバに対して要求する処理の情報を有するパケットで、IRPには、例えば、要求の内容を分類するコード(code)、データ(ファイル)の読み出し(再生)を要求するIRP_MJ_READ、データの書き込み(記録)を要求するIRP_MJ_WRITE、ファイルの生成を要求するIRP_MJ_CREATE、その他の各種の処理を要求するIRP_MJ_DEVICE_CONTROLなどがある。IRP_MJ_DEVICE_CONTROLのIRPでは、サブコード(sub code)として、IOCTL(I/O Control)が指定されるが、このIOCTLは、ユーザ(User)定義が可能になっている。 Here, the IRP is a packet having processing information requested to the device driver, and the IRP requests, for example, a code (code) for classifying the content of the request and reading (reproduction) of data (file). There are IRP_MJ_READ, IRP_MJ_WRITE for requesting data writing (recording), IRP_MJ_CREATE for requesting file generation, and IRP_MJ_DEVICE_CONTROL for requesting various other processes. In the IRP of IRP_MJ_DEVICE_CONTROL, IOCTL (I / O Control) is specified as a subcode, and this IOCTL can be defined as a user.
NT入出力マネージャ52では、Win32サブシステム51による、例えば、CreateFile()に応じたI/O要求は、IRP_MJ_CREATEのIRPに変換される。また、例えば、ReadFile()とWriteFile()は、それぞれ、IRP_MJ_READとIRP_MJ_WRITEのIRPに変換され、DeviceIoControl()は、IRP_MJ_DEVICE_CONTROLのIRPに変換される。
In the NT input /
ここで、Windows(R)のNT系のOSでは、IRPは、ストレージクラスドライバ(Storage Class Driver)のレイヤ以上のレイヤで使用される。 Here, in the Windows (R) NT-based OS, the IRP is used in a layer higher than the storage class driver layer.
図4では、ストレージクラスドライバのレイヤ以上のレイヤのデバイスドライバとして、ストレージクラスドライバであるPDストレージ55、ストレージクラスドライバの1つ上位のレイヤのファイルシステムドライバ(FileSystem Driver)であるPD_FS54、およびファイルシステムドライバの1つ上位のレイヤのファイルシステムフィルタドライバ(FileSystem Filter Driver)であるPDフィルタ53の3つのデバイスドライバが存在する。
In FIG. 4, as a device driver of a layer higher than the storage class driver layer, a
従って、本実施の形態では、NT入出力マネージャ52は、これらのPDフィルタ53、PD_FS54、PDストレージ55に対して、IRPを渡すためのサービスを提供する。
Therefore, in the present embodiment, the NT input /
具体的には、NT入出力マネージャ52は、Win32サブシステム51からのI/O要求を、IRPに変換し、例えば、PDフィルタ53に出力する。そして、PDフィルタ53が、NT入出力マネージャ52からのIRPに応じた要求を、例えば、NT入出力マネージャ52に出力し、NT入出力マネージャ52は、PDフィルタ53からの要求を、IRPに変換して、その1つ下位のレイヤのPD_FS54に出力する。さらに、PD_FS54が、NT入出力マネージャ52からのIRPに応じた要求を、例えば、NT入出力マネージャ52に出力すると、NT入出力マネージャ52は、PD_FS54からの要求を、IRPに変換し、その1つ下位のレイヤのPDストレージ55に出力する。
Specifically, the NT input /
PDフィルタ53は、PDドライブであるドライブ2用のファイルシステムフィルタドライバであり、かつ、後述するPD_FS54の上位のファイルシステムフィルタドライバである。PDフィルタ53は、アプリケーション31乃至33から、Win32サブシステム51およびNT入出力マネージャ52を介して供給される、ファイルシステムに関連するファイルシステム要求その他の要求(request)のフィルタリングを行い、そのフィルタリングの結果、PD_FS54に渡すべき要求を得て、NT入出力マネージャ52を介して、PD_FS54に出力する等の処理を行う。
The
なお、PDフィルタ53は、フィルタコア53Aを有し、アプリケーション31乃至33からの要求のフィルタリングなどのPDフィルタ53における主要な処理は、フィルタコア53Aが行う。また、PDフィルタ53は、例えば、Windows(R)レジストリであるレジストリ58に設定(記憶)されている情報を参照して、要求のフィルタリングを行う。
The
PD_FS54は、PDドライブであるドライブ2用のファイルシステムドライバで、ドライブ2に装着されたPDである光ディスク3に記録された(記録される)ファイルの管理を行う。即ち、PD_FS54は、例えば、光ディスク3に記録されたデータ(ファイル)の管理情報としてのファイルシステムに基づき、PDフィルタ53からNT入出力マネージャ52を介して要求されたファイルの書き込みや読み出しの要求を、NT入出力マネージャ52を介して、PDストレージ55に出力する。
The
ここで、ファイルシステムドライバは、一般に、ファイルストリーム(File Stream)(ファイルに記録される(記録された)データのファイル)やファイルメタ(File Meta)情報のキャッシュ(Cache)機能を有し、このキャッシュ機能によれば、例えば、キャッシュされたファイルストリームやファイルメタ情報については、光ディスク3に実際にアクセスせずに、高速に得ることができる。 Here, the file system driver generally has a cache function of a file stream (File Stream) (file of data recorded (recorded) in a file) and file meta information (File Meta). According to the cache function, for example, the cached file stream and file meta information can be obtained at high speed without actually accessing the optical disc 3.
Windows(R)のNT系のOSでは、NTキャッシュマネージャ(NT Cache Manager)59が、キャッシュ機能を有しており、PD_FS54は、NTキャッシュマネージャ59を利用して、キャッシュ機能を提供する。
In a Windows (R) NT-based OS, an
なお、PD_FS54は、FSコア54Aを有し、PD_FS54における主要な処理は、FSコア54Aが行う。
The
PDストレージ55は、PDドライブであるドライブ2の実際のデバイスドライバにあたるストレージクラスドライバで、上位のレイヤのデバイスドライバであるPD_FS54から、NT入出力マネージャ52を介して供給される要求としてのIRPを、例えば、SCSI(Small Computer System Interface)コード(SCSI Code)に変換し、SBP(Serial Bus Protocol)2ドライバ56に出力する。
The
ここで、PDストレージ55において、IRPをSCSIコードに変換するのは、SCSIコードが、後段のSBP2ドライバ56で扱われるSBP2と、いわば親和性が良いからである。
Here, the reason why the IRP is converted into the SCSI code in the
SBP2ドライバ56は、PDストレージ55からのSCSIコードを、SBP2に準拠したデータであるSBP2データに変換し(SBP2プロトコルに変換し)、1394バスドライバ(IEEE1394 bus Driver)57に供給する。
The
ここで、本実施の形態では、SBP2ドライバ56の後段の1394バスドライバ57により制御されるIEEE1394の規格に準拠した通信においてファイルシステムを扱うことができるプロトコルとして、SBP2を採用しているが、SBP2以外のプロトコルを採用することも可能である。
Here, in the present embodiment, SBP2 is adopted as a protocol that can handle the file system in communication conforming to the IEEE1394 standard controlled by the 1394 bus driver 57 following the
1394バスドライバ57は、IEEE1394I/F22(図2)を制御することにより、SBP2ドライバ56からのSBP2データなどを、ドライブ2に送信し、また、ドライブ2から送信されてくる、光ディスク3から読み出されたデータを受信する。
The 1394 bus driver 57 controls the IEEE1394 I / F 22 (FIG. 2) to transmit the SBP2 data from the
ここで、本実施の形態では、PC1とドライブ2との間で、IEEE1394の規格に準拠した通信を行うこととしているが、PC1とドライブ2との間では、その他の通信を行うことが可能である。この場合、1394バスドライバ57に代えて、PC1とドライブ2との間の通信に対応したバスドライバが用いられる。
Here, in the present embodiment, communication conforming to the IEEE1394 standard is performed between the
なお、図4において、アプリケーション31乃至33のうちのAVアプリケーション33が利用するPD_API41は、上述したように、固有のAPI(API関数)を提供する。即ち、PD_API41は、AVアプリケーション33から、その固有のAPI関数が呼び出されると、そのAPI関数に応じて、Win32サブシステム51が提供するAPI関数DeviceIoCotrol()を使用することにより、ユーザ定義のIOCTLが指定されたIRP_MJ_DEVICE_CONTROLのIRPを、NT入出力マネージャ52を介して、PDフィルタ53に供給する。これにより、PD_API41は、PDフィルタ53の固有の機能、即ち、ユーザ定義のIOCTLが表す機能を制御する。
In FIG. 4, the
このようなPD_API41を含むAVアプリケーション33は、PDドライブであるドライブ2を使用するのに必要なPDフィルタ53、PD_FS54、およびPDストレージ55とともに、例えば、リムーバブル記録媒体21(図2)に記録して販売することができる。また、PD_API41を含むAVアプリケーション33、PDフィルタ53、PD_FS54、およびPDストレージ55が記録されたリムーバブル記録媒体21は、単体で販売する他、例えば、ドライブ2に同梱し、ドライブ2の付属品として販売することができる。
The
ここで、図4において、アプリケーション31乃至33と、Win32サブシステム51とは、ユーザモード(User Mode)で動作し、NT入出力マネージャ52、PDフィルタ53、PD_FS54、PDストレージ55、SBP2ドライバ56、および1394バスドライバ57は、カーネルモード(Kernel Mode)で動作する。
4, the
さらに、図4では、NT入出力マネージャ52が、IRPを、ファイルシステムフィルタドライバであるPDフィルタ53や、ファイルシステムドライバであるPD_FS54を渡すことによって、ファイルシステムフィルタドライバやファイルシステムドライバに対して、処理の要求を行うこととしたが、Windows(R)のNT系のOSのNT入出力マネージャ52は、IRPの他、FastIOを、ファイルシステムフィルタドライバやファイルシステムドライバに渡すことにより、処理の要求を行うことが可能である。
Furthermore, in FIG. 4, the NT input /
即ち、NT入出力マネージャ52は、ファイルシステムフィルタドライバやファイルシステムドライバに対して、IRPの他、FastIOを渡すためのサービスも提供し、これにより、ファイルシステムフィルタドライバやファイルシステムドライバに対して、処理の要求を行う。
That is, the NT input /
従って、Windows(R)のNT系のOSのファイルシステムフィルタドライバやファイルシステムドライバは、一般に、IRPとFastIOの両方をサポートする。 Therefore, the file system filter driver and file system driver of the NT (R) OS of Windows (R) generally support both IRP and FastIO.
なお、FastIOによれば、例えば、ファイルの読み出し(Read)や書き込み(Write)が、NTキャッシュマネージャ59に対して直に行われる。
According to FastIO, for example, file reading (Read) and writing (Write) are performed directly to the
また、以下では、IRPとFastIOのうちの、例えば、IRPを用いることとする。但し、以下、説明する機能は、FastIOによっても実現することができる。 In the following, for example, IRP is used among IRP and FastIO. However, the functions described below can also be realized by FastIO.
次に、図5のフローチャートを参照して、アプリケーション31乃至33から光ディスク3に対するアクセスが要求されたときに図4のOS30内におけるPDフィルタ53,PD_FS54,PDストレージ55,SBP2ドライバ56,1394バスドライバ57の処理の概要について説明する。
Next, referring to the flowchart of FIG. 5, when access to the optical disc 3 is requested from the
なお、以下の説明と図5以降の図面においては、それぞれ、Win32サブシステム51およびNT入出力マネージャ52の説明と図示を、適宜省略する。
In the following description and the drawings after FIG. 5, the description and illustration of the
アプリケーション31乃至33が、例えば、光ディスク3に対するアクセスを要求するAPI関数を呼び出すと、そのAPI関数に応じた要求が、Win32サブシステム51からNT入出力マネージャ52に供給され、NT入出力マネージャ52は、Win32サブシステム51からの要求に応じたIRPが、PDフィルタ53に供給される。
For example, when the
PDフィルタ53は、ステップS1において、NT入出力マネージャ52からのIRPを受信し、ステップS2に進む。PDフィルタ53は、ステップS2において、NT入出力マネージャ52からのIRPをフィルタリングして、ステップS3に進み、PD_FS54に供給すべきIRPをキューイングする。即ち、PDフィルタ53は、図4には図示していないキューに、NT入出力マネージャ52からのIRPを供給して記憶させる。
In step S1, the
さらに、PDフィルタ53は、キューに記憶されたIRPを読み出し、NT入出力マネージャ52を介して、PD_FS54に供給して、ステップS4に進む。
Further, the
ステップS4では、PD_FS54は、PDフィルタ53からのIRPによって要求されているデータについて、NTキャッシュマネージャ59のキャッシュ機能を利用するのに必要な処理としてのキャッシュ処理を行い、ステップS5に進み、例えば、PDフィルタ53からのIRPによって要求されているデータが、NTキャッシュマネージャ59にキャッシュされているかどうかを判定する。
In step S4, the
ステップS5において、PDフィルタ53からのIRPによって要求されているデータが、NTキャッシュマネージャ59にキャッシュされていると判定された場合、ステップS6に進み、PD_FS54は、PDフィルタ53からのIRPによって要求されているデータを、NTキャッシュマネージャ59から受信する等し、そのIRPに対する応答を、PDフィルタ53およびWin32サブシステムを介して、そのIRPに対応するAPI関数を呼び出したアプリケーション(図4では、アプリケーション31乃至33のうちのいずれか)に返す。
If it is determined in step S5 that the data requested by the IRP from the
一方、ステップS5において、PDフィルタ53からのIRPによって要求されているデータが、NTキャッシュマネージャ59にキャッシュされていないと判定された場合、ステップS7に進み、PD_FS54は、PDフィルタ53からのIRPを、NT入出力マネージャ52を介して、PDストレージ55に供給して、ステップS8に進む。
On the other hand, if it is determined in step S5 that the data requested by the IRP from the
ステップS8では、PDストレージ55は、PD_FS54からのIRPを、対応するSCSIコードに変換し、SBP2ドライバ56に供給して、ステップS9に進む。ステップS9では、SBP2ドライバ56は、PDストレージ55からのSCSIコードを、SBP2データに変換し、1394バスドライバ57に供給して、ステップS10に進む。
In step S8, the
ステップS10では、1394バスドライバ57は、IEEE1394I/F22(図2)を制御することにより、SBP2ドライバ56からのSBP2データを、ドライブ2に送信する。
In step S10, the 1394 bus driver 57 transmits the SBP2 data from the
そして、1394バスドライバ57は、ドライブ2から、ステップS10で送信したSBP2データに対する応答が送信されてくるのを待って、ステップS11において、その応答を受信し、SBP2ドライバ56、PDストレージ55、PD_FS54、PDフィルタ53、およびWin32サブシステム51を介して、ステップS1で受信されたIRPを送信してきたアプリケーション(図4では、アプリケーション31乃至33のうちのいずれか)に返す。
The 1394 bus driver 57 waits for a response to the SBP2 data transmitted in step S10 from the drive 2, receives the response in step S11, and receives the response,
ところで、図4において、アプリケーション31乃至33のうちのいずれか1のアプリケーションが光ディスク3にアクセスする前に、他の1のアプリケーションが光ディスク3にアクセスしていると、1のアプリケーションが光ディスク3にアクセスするときに、ドライブ2においてシークが発生する。
By the way, in FIG. 4, if any one of the
また、1のアプリケーションが光ディスク3にアクセスしようとするときに、他の1のアプリケーションが光ディスク3にアクセスしていると、1のアプリケーションは、光ディスク3へのアクセスを待たされることになる。 When one application tries to access the optical disc 3 and another application is accessing the optical disc 3, the one application is awaited to access the optical disc 3.
一方、図4において、アプリケーション31乃至33のうちのアプリケーション33は、PDである光ディスク3に対するAVデータの書き込み(記録)や読み出し(再生)などを行うAVアプリケーションである。
On the other hand, in FIG. 4, the
従って、PDドライブであるドライブ2が、AVアプリケーション33のみのアクセスに対して、AVデータをリアルタイムで読み書きすることができるように設計されている場合には、アプリケーション31や32による光ディスク3のアクセスによって、シークが発生し、あるいは、AVアプリケーション33のアクセスが待たされると、AVアプリケーション33がAVデータをリアルタイムで読み書きすることが妨げられることになる。
Therefore, when the drive 2 which is a PD drive is designed so that AV data can be read and written in real time with respect to the access of only the
そこで、PDフィルタ53は、以下の第1乃至第3の機能の1以上を実装しており、その実装しているいずれか1の機能によって、光ディスク3に対するAVデータのリアルタイムでの読み書きが妨げられることを防止し、AVデータをリアルタイムで読み書きすることを保証するようになっている。
Therefore, the
即ち、第1の機能によれば、PDフィルタ53は、アプリケーション31乃至33からの、光ディスク3に対するアクセス要求に対応するIRPに対して、特有のプライオリティを設定し、その特有のプライオリティが設定されたIRPをキューに記憶させる。そして、PDフィルタ53は、キューに記憶されたIRPを、そのIRPに設定されたプライオリティにしたがって処理する。これにより、PDフィルタ53は、例えば、AVアプリケーション33からのIRP(AVアプリケーション33からのアクセス要求に対応するIRP)を優先的に処理し、AVアプリケーション33によるAVデータのリアルタイムでの読み書きを保証する。
That is, according to the first function, the
図6は、以上のような第1の機能を実装したPDフィルタ53の構成例を示している。なお、図6においては、アプリケーション31乃至33も図示してある。
FIG. 6 shows a configuration example of the
Windows(R)のNT系のOSであるOS30では、アプリケーションの実行は、プロセスと呼ばれる単位で行われる。さらに、プロセスの実行には、1以上のスレッドが割り当てられ、そのスレッドにおいて、プロセスが実行される。
In the
図6では、アプリケーション31は、プロセス71と72の2つのプロセスから構成されている。そして、プロセス71は、2つのスレッド71Aと71Bで実行されており、プロセス72は、1つのスレッド72Aで実行されている。
In FIG. 6, the
また、アプリケーション32は、1つのプロセス73で構成されており、プロセス73は、2つのスレッド73Aと73Bで実行されている。
The
さらに、AVアプリケーション33は、プロセス74と75の2つのプロセスから構成されている。そして、プロセス74は、2つのスレッド74Aと74Bで実行されており、プロセス75は、1つのスレッド75Aで実行されている。なお、プロセス75は、PD_API41のプロセスとなっている。
Further, the
Win32サブシステム51に対するAPI関数の呼び出しは、スレッド単位で行うことができる。従って、図6の実施の形態では、API関数の呼び出しは、スレッド71A,71B,72A,73A,73B,74A,74B,75Aそれぞれにおいて行うことができる。
The API function call to the
なお、スレッドからのAPI関数の呼び出しは、そのスレッドで実行されているプロセスからのAPI関数の呼び出しと捉えることができる。 An API function call from a thread can be regarded as an API function call from a process executed in the thread.
スレッド71A乃至75Aにおいて、API関数の呼び出しが行われると、そのAPI関数に対応するIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。
When an API function is called in the
PDフィルタ53では、フィルタコア53Aが、NT入出力マネージャ52からのIRPに対して、光ディスク3へのアクセスに関する特有のプライオリティ(以下、適宜、IRPプライオリティという)を設定する。
In the
即ち、Windows(R)のNT系のOSであるOS30は、プロセス、さらにはスレッドにプライオリティを設定し、そのプライオリティにしたがって、プロセスまたはスレッドを処理する、いわば標準的なプライオリティ機能を有する。この標準的なプライオリティ機能によれば、例えば、CPU12や、RAM14、その他のPC1の資源は、OS30によって設定されたプライオリティが高いプロセスまたはスレッドに、優先的に割り当てられる。
That is, the
従って、OS30の標準的なプライオリティ機能によって、例えば、AVアプリケーション33のプロセス74および75に対して、アプリケーション31のプロセス71および72、並びにアプリケーション32のプロセス73よりも高いプライオリティを設定することにより、AVアプリケーション33は、アプリケーション31および32よりも優先的に、光ディスク3にアクセスすることが可能となる。
Therefore, by setting a higher priority than the processes 71 and 72 of the
しかしながら、OS30の標準的なプライオリティ機能は、光ディスク3に対するアクセスの他、CPU12の使用や、RAM14へのアクセスなども影響を与える。
However, the standard priority function of the
従って、OS30の標準的なプライオリティ機能によって、AVアプリケーション33(のプロセス)のプライオリティを高く設定した場合には、OS30が提供する重要なサービスのプロセスがCPU12やRAM14を使用するのに、長時間待たされることがある。これにより、サービスが停止したのと等価な状態となり、最悪の場合には、例えば、PC1がハングアップすることになる。
Therefore, when the priority of the AV application 33 (the process) is set high by the standard priority function of the
そこで、PDフィルタ53では、フィルタコア53Aが、NT入出力マネージャ52からのIRPに対して、標準的なプライオリティ機能によるプライオリティとは独立した(関係のない)IRPプライオリティを設定する。
Therefore, in the
IRPプライオリティは、光ディスク3に対するアクセスのプライオリティである。従って、AVアプリケーション33(のプロセス)に対して、高いIRPプライオリティを設定した場合に、そのIRPプライオリティによって、OS30が提供するサービスのプロセスを含む他のプロセスが制限されるのは、光ディスク3に対するアクセスだけであり、CPU12やRAM14の使用は制限されない。このため、IRPプライオリティによれば、OS30が提供する重要なサービスが停止して、PC1がハングアップすることなどを防止することができる。
The IRP priority is a priority of access to the optical disc 3. Therefore, when a high IRP priority is set for the AV application 33 (its process), other processes including the process of the service provided by the
PDフィルタ53のフィルタコア53Aは、NT入出力マネージャ52からのIRPに対して、IRPプライオリティを設定すると、そのIRPを、キュー81Aまたは81Bに供給して記憶させる。即ち、キュー81Aと81Bは、フィルタコア53Aから供給される、IRPプライオリティが設定されたIRPを記憶する。
When the IRP priority is set for the IRP from the NT input /
ここで、図6の実施の形態では、PDドライブであるドライブ2に、例えば、2つのボリューム(Volume)が存在するものとして、その2つのボリュームそれぞれに対するキューとして、2つのキュー81Aと81Bが設けられている。PDフィルタ53は、2つのボリュームのうちの、キュー81Aに対応するボリュームに対してのIRPを、キュー81Aに供給し、キュー81Bに対応するボリュームに対してのIRPを、キュー81Bに供給する。なお、以下、キュー81Aと81Bとを特に区別する必要がない限り、単に、キュー81と記述する
Here, in the embodiment of FIG. 6, assuming that there are two volumes (Volume) in the drive 2 which is a PD drive, for example, two
PDフィルタ53は、キュー81に記憶されたIRPを、そのIRPに設定されたIRPプライオリティにしたがって処理する。即ち、PDフィルタ53は、IRPプライオリティのより高いIRPを、キュー81から優先的に読み出し、NT入出力マネージャ52を介して、下位のレイヤのPD_FS54に供給する。
The
なお、PDフィルタ53が、以上のような第1の機能(後述する第2および第3の機能についても同様)の処理を行うためのスレッドは、PDフィルタ53のレイヤであるファイルシステムフィルタドライバのレイヤで作成する。IRPを記憶させるキュー81も、ファイルシステムフィルタドライバのレイヤで作成する。
Note that the thread for the
PDフィルタ53は、第1の機能により、AVアプリケーション33からのIRPを、アプリケーション31および32からのIRPよりも優先的に処理するために、例えば、自身に登録されたプロセスID(ProcessID)のIRPには、最大のIRPプライオリティ(IRPプライオリティがとりうる値の最大値)を設定し、登録されていないプロセスIDのIRPには、最小のIRPプライオリティ(IRPプライオリティがとりうる値の最小値)を設定する。
The
即ち、OS30は、プロセスに対してユニークなプロセスIDを付して、各プロセスを管理するようになっており、各プロセスからのIRP(各プロセスが呼び出したAPI関数に対応するIRP)は、そのプロセスのプロセスIDを有している。そして、PDフィルタ53は、NT入出力マネージャ52から受信したあるプロセスからのIRPが有するプロセスIDが、自身に登録されたプロセスIDに一致する場合には、そのIRPに対して、最大のIRPプライオリティを設定し、一致しない場合(プロセスIDが登録されていない場合も含む)には、そのIRPに対して、最小のIRPプライオリティを設定する。
That is, the
ここで、IRPプライオリティを表すデータとしては、例えば、5ビットを採用することができる。この場合、最大のIRPプライオリティは31となり、最小のIRPプライオリティは0となる。 Here, for example, 5 bits can be adopted as data representing the IRP priority. In this case, the maximum IRP priority is 31 and the minimum IRP priority is 0.
一方、AVアプリケーション33で利用(ロード)されるPD_API41は、PDフィルタ53の第1の機能を利用するために、そのロード(load)時に、Win32サブシステム51が提供するAPI関数DeviceIoControl()によって、AVアプリケーション33のプロセス74と75のうちの、自身をロードするプロセス75のプロセスIDの登録を要求する。即ち、PD_API41は、AVアプリケーション33が起動され、そのAVアプリケーション33のプロセス75によってロードされると、そのプロセス75に割り当てられたプロセスIDの登録を、PDフィルタ53に対して要求するAPI関数DeviceIoControl()を呼び出す。
On the other hand, the
また、PD_API41は、自身をロードしたプロセス75の終了時に、そのプロセス75に割り当てられたプロセスIDの削除(登録されたプロセスIDの削除)を、PDフィルタ53に対して要求するAPI関数DeviceIoControl()を呼び出す。
In addition, the
従って、PD_API41のプロセス75が存在する限りは、PDフィルタ53において、そのプロセス75からのIRP(プロセス75(PD_API41)が呼び出したWin32サブシステム51が提供するAPI関数に対応するIRP)に対しては、最大のIRPプライオリティが設定される。
Therefore, as long as the process 75 of the
次に、図7は、PDフィルタ53が第1の機能の処理を行うときに、PD_API41が、PDフィルタ53を制御するために、AVアプリケーション33に提供する制御用(PDフィルタ53の制御用)のAPI(関数)を示している。
Next, FIG. 7 illustrates the control provided by the
図7においては、PD_API41が、PDフィルタ53を制御するために、AVアプリケーション33に提供する制御用のAPI関数として、PdGetPriority()と、PdSetPriority()とが用意されている。
In FIG. 7, PdGetPriority () and PdSetPriority () are prepared as control API functions provided to the
API関数PdGetPriority()とPdSetPriority()とは、いずれも、プロセスIDとIRPプライオリティとを、引数としてとる。 API functions PdGetPriority () and PdSetPriority () both take a process ID and an IRP priority as arguments.
そして、API関数PdGetPriority()は、引数のプロセスIDを指定して呼び出すことにより、引数で指定されているプロセスIDのプロセスに対してPDフィルタ53が設定するIRPプライオリティを、その引数にセットして返す。さらに、API関数PdGetPriority()は、引数で指定されているプロセスIDのプロセスに対してPDフィルタ53が設定するIRPプライオリティの取得に成功した場合、戻り値として1を返し、失敗した場合、戻り値として0を返す。
Then, the API function PdGetPriority () is called by specifying the process ID of the argument, and the IRP priority set by the
従って、API関数PdGetPriority()によれば、任意のプロセスからのIRPに対して、PDフィルタ53が設定するIRPプライオリティを認識することができる。
Therefore, according to the API function PdGetPriority (), the IRP priority set by the
API関数PdSetPriority()は、引数のプロセスIDとIRPプライオリティを指定して呼び出すことにより、引数で指定されているプロセスIDのプロセスに対してPDフィルタ53が設定するIRPプライオリティを、その引数で指定されているIRPプライオリティに変更する。さらに、API関数PdSetPriority()は、PDフィルタ53が設定するIRPプライオリティの変更に成功した場合、戻り値として1を返し、失敗した場合、戻り値として0を返す。
When the API function PdSetPriority () is called by specifying the process ID and IRP priority of the argument, the IRP priority set by the
従って、API関数PdSetPriority()によれば、例えば、PDフィルタ53に登録されているプロセスIDと一致するプロセスID、または一致しないプロセスIDのプロセスからのIRPに対して、PDフィルタ53が設定するIRPプライオリティを変更することができる。
Therefore, according to the API function PdSetPriority (), for example, the IRP set by the
PD_API41は、API関数PdGetPriority()が呼び出されると、PDフィルタ53で設定されるIRPプライオリティを、PDフィルタ53に対して要求するAPI関数DeviceIoControl()を呼び出す。
When the API function PdGetPriority () is called, the
また、PD_API41は、API関数PdSetPriority()が呼び出されると、PDフィルタ53で設定されるIRPプライオリティの変更を、PDフィルタ53に対して要求するAPI関数DeviceIoControl()を呼び出す。
When the API function PdSetPriority () is called, the
以上のように、PD_API41は、PDフィルタ53の第1の機能を利用するために、プロセスIDの登録を要求するAPI関数DeviceIoControl()、およびプロセスIDの削除を要求するAPI関数DeviceIoControl()、さらには、必要に応じて、PDフィルタ53で設定されるIRPプライオリティを要求するAPI関数DeviceIoControl()や、PDフィルタ53で設定されるIRPプライオリティの変更を要求するAPI関数DeviceIoControl()を呼び出す。
As described above, the
API関数DeviceIoControl()が呼び出されると、Win32サブシステム51は、NT入出力マネージャ52に対して、そのAPI関数DeviceIoControl()に応じた要求を行い、NT入出力マネージャ52は、その要求を、IRP_MJ_DEVICE_CONTROLのIRPに変換し、PDフィルタ53に供給する。
When the API function DeviceIoControl () is called, the
このIRP_MJ_DEVICE_CONTROLのIRPでは、上述したように、ユーザ定義が可能なサブコードとしてのIOCTLが指定される。 In the IRP of this IRP_MJ_DEVICE_CONTROL, as described above, IOCTL is specified as a subcode that can be defined by the user.
図8は、PDフィルタ53が第1の機能の処理を行うときに、IRP_MJ_DEVICE_CONTROLで指定されるユーザ定義のIOCTLを示している。
FIG. 8 shows a user-defined IOCTL specified by IRP_MJ_DEVICE_CONTROL when the
図8では、IOCTL_PD_SET_PROCESSID, IOCTL_PD_DELETE_PROCESSID, IOCTL_PD_SET_RRIORITY, IOCTL_PD_GET_RRIORITYの4つのIOCTLが、ユーザ定義のIOCTLとして用意されている。 In FIG. 8, four IOCTLs IOCTL_PD_SET_PROCESSID, IOCTL_PD_DELETE_PROCESSID, IOCTL_PD_SET_RRIORITY, and IOCTL_PD_GET_RRIORITY are prepared as user-defined IOCTLs.
IOCTL_PD_SET_PROCESSIDは、プロセスIDの登録を要求するAPI関数DeviceIoControl()(に応じた要求)に対応するIRP_MJ_DEVICE_CONTROLのIRPのサブコードとなるIOCTLである。プロセスIDの登録を要求するAPI関数DeviceIoControl()は、例えば、その登録を要求するプロセスIDを、その引数としてとり、IOCTL_PD_SET_PROCESSIDは、その引数となっているプロセスIDのPDフィルタ53への登録を要求するIOCTLである。
IOCTL_PD_SET_PROCESSID is an IOCTL that is an IRP subcode of IRP_MJ_DEVICE_CONTROL corresponding to the API function DeviceIoControl () (request according to) that requests registration of a process ID. The API function DeviceIoControl () that requests registration of a process ID takes, for example, the process ID that requests the registration as an argument, and IOCTL_PD_SET_PROCESSID requests registration of the process ID that is the argument to the
IOCTL_PD_DELETE_PROCESSIDは、プロセスIDの削除を要求するAPI関数DeviceIoControl()に対応するIRP_MJ_DEVICE_CONTROLのIRPのサブコードとなるIOCTLである。プロセスIDの削除を要求するAPI関数DeviceIoControl()は、例えば、その削除を要求するプロセスIDを、その引数としてとり、IOCTL_PD_DELETE_PROCESSIDは、その引数となっているプロセスIDの、PDフィルタ53からの削除を要求するIOCTLである。
IOCTL_PD_DELETE_PROCESSID is an IOCTL that is an IRP subcode of IRP_MJ_DEVICE_CONTROL corresponding to the API function DeviceIoControl () that requests deletion of a process ID. The API function DeviceIoControl () that requests deletion of the process ID takes, for example, the process ID that requests the deletion as an argument, and IOCTL_PD_DELETE_PROCESSID deletes the process ID that is the argument from the
IOCTL_PD_SET_RRIORITYは、PDフィルタ53で設定されるIRPプライオリティの変更を要求するAPI関数DeviceIoControl()に対応するIRP_MJ_DEVICE_CONTROLのIRPのサブコードとなるIOCTLで、PDフィルタ53で設定されるIRPプライオリティの変更を要求するAPI関数DeviceIoControl()に対応する図7のAPI関数PdSetPriority()の引数となっているプロセスIDのIRPに設定するIRPプライオリティを、同じく、その引数となっているIRPプライオリティに変更することを要求するIOCTLである。
IOCTL_PD_SET_RRIORITY is an IOCTL that is a subcode of the IRP_MJ_DEVICE_CONTROL IRP corresponding to the API function DeviceIoControl () that requests the change of the IRP priority set in the
IOCTL_PD_GET_RRIORITYは、PDフィルタ53で設定されるIRPプライオリティを要求するAPI関数DeviceIoControl()に対応するIRP_MJ_DEVICE_CONTROLのIRPのサブコードとなるIOCTLで、PDフィルタ53で設定されるIRPプライオリティを要求するAPI関数DeviceIoControl()に対応する図7のAPI関数PdGetPriority()の引数となっているプロセスIDのIRPに設定されるIRPプライオリティを要求するIOCTLである。
IOCTL_PD_GET_RRIORITY is an IOCTL that is an IRP subcode of IRP_MJ_DEVICE_CONTROL corresponding to the API function DeviceIoControl () that requests the IRP priority set by the
なお、上述したような、IRP_MJ_DEVICE_CONTROLのIRPのサブコードとなるユーザ定義のIOCTLは、Win32サブシステム51が提供するAPI関数DeviceIoControl()を利用して、Win32サブシステム51からNT入出力マネージャ52に渡され、NT入出力マネージャ52において、IRP_MJ_DEVICE_CONTROLのIRPのサブコードとして指定される。
Note that the user-defined IOCTL, which is the IRP subcode of IRP_MJ_DEVICE_CONTROL as described above, is passed from the
次に、図9のフローチャートを参照して、PDフィルタ53が第1の機能を実装している場合の、図6におけるAVアプリケーション33、PD_API41、およびPDフィルタ53の処理の概要について説明する。
Next, an overview of the processing of the
AVアプリケーション33が起動されると、AVアプリケーション33は、ステップS21において、AVアプリケーション33のプロセス74と75のうちのプロセス75によってPD_API41をロードする。PD_API41は、プロセス75によってロードされると、ステップS31において、自身をロードしたプロセス75のプロセスIDの登録を要求するAPI関数DeviceIoControl()を呼び出し、このAPI関数DeviceIoControl()の呼び出しによって、プロセス75のプロセスIDの登録を要求するIOCTL_PD_SET_PROCESSIDがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。
When the
PDフィルタ53は、ステップS41において、NT入出力マネージャ52からのIRPを受信し、そのIRPのIOCTL_PD_SET_PROCESSIDにしたがい、PD_API41のプロセス75のプロセスIDを登録する。
In step S41, the
従って、この後は、PDフィルタ53において、PD_API41のプロセス75のプロセスIDが削除されない限り、そのプロセス75からのIRPには、最大のIRPプライオリティが設定され、他のプロセスからのIRPには、最小のIRPプライオリティが設定される。これにより、PDフィルタ53では、PD_API41のプロセス75からのIRPが優先的に(最優先で)処理される。
Therefore, thereafter, unless the process ID of the process 75 of the
即ち、例えば、AVアプリケーション33が、ステップS22において、光ディスク3に対するアクセス要求としての、例えば、ファイルの読み出しを要求するAPI関数ReadFile()などを呼び出すと、PD_API41は、ステップS32において、そのAPI関数ReadFile()の呼び出しを受信し、ステップS33に進む。
That is, for example, when the
ステップS33では、PD_API41は、AVアプリケーション33からのAPI関数ReadFile()の呼び出しに応じて、同一のAPI関数ReadFile()(Win32サブシステム51が提供するAPI関数ReadFile())を呼び出し、この呼び出しによって、ファイルの読み出しを要求するIRP_MJ_READのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。
In step S33, the
PDフィルタ53は、ステップS42において、NT入出力マネージャ52からのIRP_MJ_READのIRPを受信し、そのIRP_MJ_READのIRPに対して、IRPプライオリティを設定する。
In step S42, the
即ち、いまの場合、PDフィルタ53が受信したIRP_MJ_READのIRPは、PD_API41(のプロセス75)からのものである。また、ステップS41において、PDフィルタ53には、PD_API41のプロセス75のプロセスIDが登録されている。従って、ステップS42においてPDフィルタ53が、PD_API41のプロセス75から受信したIRP_MJ_READのIRPには、最大のIRPプライオリティが設定される。
That is, in this case, the IRP of IRP_MJ_READ received by the
その結果、PDフィルタ53では、PD_API41のプロセス75からのIRP_MJ_READのIRPが、他に、最大のIRPプライオリティが設定されているIRPが存在しない限り、即座に処理される。
As a result, in the
即ち、PDフィルタ53では、ステップS43において、PD_API41のプロセス75からのIRP_MJ_READのIRPが、優先的に、PD_FS54に供給される。
That is, in step S43, the
その後、AVアプリケーション33が、例えば終了等されると、ステップS23において、AVアプリケーション33は、PD_API41(のプロセス75)に対してアンロードを要求する。
Thereafter, when the
PD_API41は、アンロードの要求があると、ステップS34において、自身のプロセス75のプロセスIDの削除を要求するAPI関数DeviceIoControl()を呼び出し、このAPI関数DeviceIoControl()の呼び出しによって、プロセス75のプロセスIDの削除を要求するIOCTL_PD_DELETE_PROCESSIDがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。
When there is a request for unloading, the
PDフィルタ53は、ステップS44において、NT入出力マネージャ52からのIRPを受信し、そのIRPのIOCTL_PD_DELETE_PROCESSIDにしたがい、PD_API41のプロセス75のプロセスIDを削除する。
In step S44, the
従って、この後は、PDフィルタ53において、IRPは、OS30の標準的なプライオリティ機能によって設定されるプライオリティにしたがって処理される。
Therefore, thereafter, in the
次に、図10および図11のフローチャートを参照して、図6のPDフィルタ53による第1の機能の処理について説明する。
Next, processing of the first function by the
まず、図10のフローチャートを参照して、第1の機能を実装する図6のPDフィルタ53において、IRPが受信されてから、そのIRPがキュー81に記憶されるまでの処理(キュー81への入力処理)について説明する。
First, referring to the flowchart of FIG. 10, the
アプリケーション31乃至33のうちのいずれかのプロセス(図6では、プロセス71乃至75のうちのいずれか)において、ドライブ2に対するI/O関係の処理を要求する(I/O要求を行う)API関数が呼び出されると、そのAPI関数の呼び出し(によってWin32サブシステム51が出力する要求)に応じて、NT入出力マネージャ52は、そのAPI関数に対応するIRPを、PDフィルタ53に供給する。
An API function that requests an I / O-related process for the drive 2 (performs an I / O request) in any one of the
PDフィルタ53では、フィルタコア53Aが、ステップS51において、API関数を呼び出したプロセスからのIRP(プロセスによるAPI関数の呼び出しに応じて、NT入出力マネージャ52から供給されたIRP)を受信して、ステップS52に進み、そのIRPが、IOCTLとして、IOCTL_PD_SET_PROCESSID(図8)が指定されているIRP(IRP_MJ_DEVICE_CONTROLのIRP)であるかどうかを判定する。
In the
ステップS52において、プロセスからのIRP(ステップS51でフィルタコア53Aが受信したIRP)が、IOCTL_PD_SET_PROCESSIDが指定されているIRPであると判定された場合、ステップS53に進み、フィルタコア53Aは、そのIRPに含まれるプロセスID、つまり、そのIRPに対応するAPI関数を呼び出したプロセスのプロセスIDを登録(記憶)し、ステップS51に戻る。
If it is determined in step S52 that the IRP from the process (the IRP received by the
即ち、IOCTL_PD_SET_PROCESSIDが指定されているIRPには、そのIRPに対応するAPI関数を呼び出したプロセスのプロセスIDが含まれており、フィルタコア53Aは、そのプロセスIDを登録する。ここで、フィルタコア53Aにおいて登録されたプロセスIDを、以下、適宜、登録プロセスIDという。
That is, the IRP for which IOCTL_PD_SET_PROCESSID is specified includes the process ID of the process that called the API function corresponding to the IRP, and the
一方、ステップS52において、プロセスからのIRPが、IOCTL_PD_SET_PROCESSIDが指定されているIRPでないと判定された場合、ステップS54に進み、フィルタコア53Aは、そのIRPが、IOCTLとして、IOCTL_PD_DELETE_PROCESSID(図8)が指定されているIRP(IRP_MJ_DEVICE_CONTROLのIRP)であるかどうかを判定する。
On the other hand, if it is determined in step S52 that the IRP from the process is not an IRP for which IOCTL_PD_SET_PROCESSID is designated, the process proceeds to step S54, and the
ステップS54において、プロセスからのIRPが、IOCTL_PD_DELETE_PROCESSIDが指定されているIRPであると判定された場合、ステップS55に進み、フィルタコア53Aは、登録プロセスIDを削除(消去)し、ステップS51に戻る。
If it is determined in step S54 that the IRP from the process is an IRP for which IOCTL_PD_DELETE_PROCESSID is specified, the process proceeds to step S55, and the
また、ステップS54において、プロセスからのIRPが、IOCTL_PD_DELETE_PROCESSIDが指定されているIRPでないと判定された場合、ステップS56に進み、フィルタコア53Aは、そのIRPが、光ディスク3へのアクセスを要求するアクセス要求のIRPであるかどうかを判定する。
If it is determined in step S54 that the IRP from the process is not an IRP for which IOCTL_PD_DELETE_PROCESSID is specified, the process proceeds to step S56, and the
ステップS56において、プロセスからのIRPが、アクセス要求のIRPでないと判定された場合、即ち、プロセスからのIRPが、例えば、PDフィルタ53で設定されるIRPプライオリティの変更を要求するIOCTL_PD_SET_RRIORITY(図8)が、IOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPや、PDフィルタ53で設定されるIRPプライオリティを要求するIOCTL_PD_GET_RRIORITY(図8)が、IOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPなどである場合、ステップS57に進み、フィルタコア53Aは、そのIRPに応じた処理を行い、その処理結果に対応する応答を、NT入出力マネージャ52およびWin32サブシステム51を介して、IRPに対応するAPI関数を呼び出したプロセスに返し、ステップS51に戻る。
When it is determined in step S56 that the IRP from the process is not the IRP of the access request, that is, the IRP from the process requests a change in the IRP priority set by the
ここで、ステップS57では、例えば、プロセスからのIRPが、IOCTL_PD_SET_RRIORITY(図8)が指定されているIRPである場合、フィルタコア53Aは、そのIOCTL_PD_SET_RRIORITYで指定されているプロセスIDのプロセスからのIRPに設定するIRPプライオリティを、同じくIOCTL_PD_SET_RRIORITYで指定されているIRPプライオリティに変更する処理を行う。また、ステップS57では、例えば、プロセスからのIRPが、IOCTL_PD_GET_RRIORITY(図8)が指定されているIRPである場合、フィルタコア53Aは、そのIOCTL_PD_GET_RRIORITYで指定されているプロセスIDのプロセスからのIRPに設定するIRPプライオリティを、応答として返す。
Here, in step S57, for example, when the IRP from the process is an IRP for which IOCTL_PD_SET_RRIORITY (FIG. 8) is specified, the
一方、ステップS56において、プロセスからのIRPが、アクセス要求のIRPであると判定された場合、即ち、プロセスからのIRPが、例えば、ファイルの読み出しを要求するIRP_MJ_READのIRPや、ファイルの書き込みを要求するIRP_MJ_WRITEのIRPである場合、ステップS58に進み、フィルタコア53Aは、プロセスからのIRPに含まれるプロセスID、即ち、そのIRPに対応するAPI関数を呼び出したプロセスのプロセスIDが、登録プロセスIDに一致するかどうかを判定する。
On the other hand, when it is determined in step S56 that the IRP from the process is the IRP of the access request, that is, the IRP from the process requests, for example, an IRP of IRP_MJ_READ that requests a file read or a file write. If the IRP_MJ_WRITE is an IRP, the process proceeds to step S58, and the
ステップS58において、プロセスからのIRPに含まれるプロセスIDが、登録プロセスIDに一致しないと判定された場合、ステップS59に進み、フィルタコア53Aは、プロセスからのIRPに対して、最小のIRPプライオリティ(IRPプライオリティが取り得る値のうちの最小値)を設定(セット)し、ステップS61に進む。
If it is determined in step S58 that the process ID included in the IRP from the process does not match the registered process ID, the process proceeds to step S59, where the
また、ステップS58において、プロセスからのIRPに含まれるプロセスIDが、登録プロセスIDに一致すると判定された場合、ステップS60に進み、フィルタコア53Aは、プロセスからのIRPに対して、最大のIRPプライオリティ(IRPプライオリティが取り得る値のうちの最大値)を設定し、ステップS61に進む。
If it is determined in step S58 that the process ID included in the IRP from the process matches the registered process ID, the process advances to step S60, and the
ステップS61では、フィルタコア53Aは、ステップS59またはS60でIRPプライオリティを設定した、プロセスからのIRPを、キュー81へ出力して記憶させ(キューイングし)、次のIRPが供給されるのを待って、ステップS51に戻る。
In step S61, the
なお、図10では、プロセスからのIRPに含まれるプロセスIDが、登録プロセスIDに一致しない場合、そのプロセスからのIRPに対して、最小のIRPプライオリティを設定し、プロセスからのIRPに含まれるプロセスIDが、登録プロセスIDに一致する場合、そのプロセスからのIRPに対して、最大のIRPプライオリティを設定するようにしたが、登録プロセスIDに一致しないプロセスIDのIRP、または登録プロセスIDに一致するプロセスIDのIRPに対して設定するIRPプライオリティは、その他の値のIRPプライオリティとすることができる。 In FIG. 10, when the process ID included in the IRP from the process does not match the registered process ID, a minimum IRP priority is set for the IRP from that process, and the process included in the IRP from the process. When the ID matches the registration process ID, the maximum IRP priority is set for the IRP from that process, but it matches the IRP of the process ID that does not match the registration process ID, or the registration process ID. The IRP priority set for the IRP of the process ID can be another value of the IRP priority.
また、登録プロセスIDに一致するプロセスIDのIRPなどの、あるプロセスIDのIRPに対して設定するIRPプライオリティは、例えば、図7で説明したAPI関数PdSetPriority()によって指定することが可能である。 Also, the IRP priority set for an IRP with a certain process ID, such as an IRP with a process ID that matches the registered process ID, can be specified by, for example, the API function PdSetPriority () described with reference to FIG.
さらに、登録プロセスIDとしては、1つのプロセスIDだけではなく、複数のプロセスIDを登録することが可能である。この場合、複数の登録プロセスIDそれぞれに対して、固有のIRPプライオリティを対応付け、ある登録プロセスIDに一致するプロセスIDのIRPには、その登録プロセスIDに対応付けられた固有のIRPプライオリティを設定するようにすることが可能である。 Furthermore, as the registration process ID, not only one process ID but also a plurality of process IDs can be registered. In this case, a unique IRP priority is associated with each of the plurality of registered process IDs, and a unique IRP priority associated with the registered process ID is set in the IRP of the process ID that matches a certain registered process ID. It is possible to do so.
次に、図11のフローチャートを参照して、第1の機能を実装する図6のPDフィルタ53において、キュー81に記憶されたIRPを対象に行われる処理(キュー81からの出力処理)について説明する。
Next, with reference to the flowchart of FIG. 11, processing (output processing from the queue 81) performed on the IRP stored in the
PDフィルタ53では、フィルタコア53Aが、ステップS71において、キュー81に記憶されたIRPから、IRPプライオリティが最も高い(最も大きい)ものを検索し、ステップS72に進む。
In the
ステップS72では、フィルタコア53Aは、ステップS71の検索によって得られたIRPプライオリティが最も高いIRPを処理し、ステップS71に戻る。即ち、ステップS72では、フィルタコア53Aは、IRPプライオリティが最も高いIRPを、優先的に、キュー81から読み出し、NT入出力マネージャ52を介して、PD_FS54に出力する。
In step S72, the
なお、ステップS71の検索によって、複数のIRPが、IRPプライオリティが最も高いIRPとして得られた場合、フィルタコア53Aは、その複数のIRPを、例えば、OS30の標準的なプライオリティ機能や、IRPがキュー81に記憶された記憶時刻などにしたがって処理する。即ち、フィルタコア53Aは、例えば、標準的なプライオリティ機能によるプライオリティが高いプロセスからのIRPや、記憶時刻が早いIRPなどから、優先的に、キュー81から読み出し、PD_FS54に出力する。
If a plurality of IRPs are obtained as the IRP with the highest IRP priority as a result of the search in step S71, the
以上のように、PDフィルタ53では、IRPに対して、OS30の標準的なプライオリティ機能によるプライオリティとは別のIRPプライオリティを設定する。具体的には、登録プロセスIDと一致するプロセスIDのプロセスからのIRPには、最大のIRPプライオリティを設定し、登録プロセスIDと一致しないプロセスIDのプロセスからのIRPには、最小のIRPプライオリティを設定する。
As described above, the
そして、PDフィルタ53は、IRPプライオリティが設定されたIRPを、キュー81に記憶させ、さらに、キュー81に記憶されたIRPを、IRPプライオリティにしたがって処理する。
Then, the
一方、AVアプリケーション33(図6)では、そのプロセス75によってPD_APL41がロードされると、PD_APL41が、そのプロセス75のプロセスIDの登録を、PDフィルタ53に要求し、PDフィルタ53は、その要求に応じて、PD_APL41のプロセス75のプロセスIDを登録する。
On the other hand, in the AV application 33 (FIG. 6), when the
そして、AVアプリケーション33は、PD_APL41のプロセス75から、光ディスク3へのアクセス要求を行う。
Then, the
従って、PDフィルタ53では、AVアプリケーション33による光ディスク3へのアクセス要求としてのIRPが、他のアプリケーション31や32(のプロセス)からのIRPよりも優先的に処理されるので、アプリケーション31や32からのIRPの処理を待つことや、そのIRPの処理によって生じるドライブ2のシーク等によって、AVアプリケーション33による光ディスク3に対するデータの読み書きが妨げられることを防止(低減)することができる。これにより、AVアプリケーション33において、AVデータを、リアルタイムで光ディスク3に記録し、また再生することができる。
Therefore, in the
なお、AVデータを、リアルタイムで光ディスク3に記録し、また再生するには、最低限、AVアプリケーション33において、AVデータの記録と再生が行われている間、そのAVアプリケーション33による光ディスク3へのアクセス要求としてのIRPが、優先的に処理されれば良い。
In order to record and reproduce the AV data on the optical disc 3 in real time, at least while the
一方、上述の実施の形態では、図9で説明したように、PDフィルタ53において、PD_APL41がロードされている間だけ、AVアプリケーション33による光ディスク3へのアクセス要求としてのIRPが、優先的に処理される。
On the other hand, in the above-described embodiment, as described with reference to FIG. 9, the IRP as an access request to the optical disc 3 by the
従って、PD_APL41は、図9で説明したように、AVアプリケーション33の起動時にロードし、その終了時にアンロードする他、例えば、AVアプリケーション33において、AVデータの記録または再生が行われるときにロードし、その記録または再生が停止されたときにアンロードするようにしても良い。
Therefore, as described in FIG. 9, the
次に、AVデータをリアルタイムで読み書きすることを保証するためのPDフィルタ53の第2の機能について説明する。
Next, the second function of the
即ち、第2の機能によれば、PDフィルタ53は、アプリケーション31乃至33からの、光ディスク3に対するアクセス要求に対応するIRPの処理の許可または不許可を表すポーズフラグ(許可情報)を設定する一方、アプリケーション31乃至33からのIRPをキュー81に記憶させる。そして、PDフィルタ53は、キュー81に記憶されたIRPを、ポーズフラグにしたがって処理する。これにより、PDフィルタ53は、例えば、AVアプリケーション33以外のアプリケーションからのIRPの処理を停止して、AVアプリケーション33からのIRP(AVアプリケーション33からのアクセス要求に対応するIRP)だけを処理し、AVアプリケーション33によるAVデータのリアルタイムでの読み書きを保証する。
That is, according to the second function, the
即ち、第2の機能を実装したPDフィルタ53は、ポーズフラグによって、特定のIRPのみを処理して、他のIRPの処理を停止する状態であるポーズ(Pause)状態と、すべてのIRPを処理する状態であるラン(Run)状態とのうちのいずれか一方の状態となる。
That is, the
以上のような第2の機能を実装したPDフィルタ53は、例えば、図6に示したように構成される。
The
但し、第2の機能を実装したPDフィルタ53(図6)では、フィルタコア53Aにおいて、プロセスIDの登録と、IRPに対するIRPプライオリティの設定の他、ポーズフラグの設定が行われる。さらに、第2の機能を実装したPDフィルタ53では、フィルタコア53Aにおいて、キュー81に記憶されたIRPが、IRPプライオリティの他、ポーズフラグにしたがって処理される。
However, in the PD filter 53 (FIG. 6) in which the second function is implemented, the pause flag is set in the
AVアプリケーション33で利用されるPD_API41は、PDフィルタ53の第2の機能を利用するために、PDフィルタ53の状態をポーズ状態またはラン状態にする、PDフィルタ53の制御用のAPI(関数)を、AVアプリケーション33に提供する。
In order to use the second function of the
図12は、PDフィルタ53が第2の機能の処理を行うときに、PD_API41が、PDフィルタ53を制御するために、AVアプリケーション33に提供する制御用(PDフィルタ53の制御用)のAPI関数を示している。
FIG. 12 shows an API function for control (for controlling the PD filter 53) provided by the
なお、図12には、いままで説明したPDフィルタ53の制御用のAPI関数を除くAPI関数(はじめて説明するAPI関数)を示してある。
FIG. 12 shows API functions (API functions described for the first time) excluding the API functions for controlling the
図12においては、PD_API41が、PDフィルタ53を制御するために、AVアプリケーション33に提供する制御用のAPI関数として、PdPauseOtherAppIrp()と、PdRunOtherAppIrp()とが用意されている。
In FIG. 12, PdPauseOtherAppIrp () and PdRunOtherAppIrp () are prepared as control API functions provided to the
API関数PdPauseOtherAppIrp()によれば、PDフィルタ53が、特定のIRPのみを処理し、他のIRPの処理を停止するポーズ状態となる。一方、API関数PdRunOtherAppIrp()によれば、PDフィルタ53が、すべてのIRPを処理するラン状態となる。
According to the API function PdPauseOtherAppIrp (), the
なお、API関数PdPauseOtherAppIrp()とPdRunOtherAppIrp()とは、いずれも、ボリュームを特定するためのボリュームネームを、引数としてとる。 The API functions PdPauseOtherAppIrp () and PdRunOtherAppIrp () both take a volume name for specifying a volume as an argument.
そして、API関数PdPauseOtherAppIrp()が、引数のボリュームネームを指定して呼び出されることにより、PDフィルタ53は、その引数で指定されているボリュームネームによって特定されるボリュームに対するアクセス要求に対応するIRPのうち、特定のIRPのみを処理し、他のIRPの処理を停止するポーズ状態となる。
Then, the API function PdPauseOtherAppIrp () is called by specifying the volume name of the argument, so that the
また、API関数PdRunOtherAppIrp()が、引数のボリュームネームを指定して呼び出されることにより、PDフィルタ53は、その引数で指定されているボリュームネームによって特定されるボリュームに対するアクセス要求に対応するIRPをすべて処理する(処理対象とする)ラン状態となる。
In addition, when the API function PdRunOtherAppIrp () is called by specifying the volume name of the argument, the
従って、PDフィルタ53をポーズ状態またはラン状態とすることは、ボリュームごとに、即ち、ボリュームに対応するキューごとに行うことができる。例えば、図6のPDフィルタ53においては、キュー81Aと81Bそれぞれについて独立に、ポーズ状態またはラン状態を設定することができる。
Accordingly, the
但し、以下では、説明を簡単にするために、キュー81Aと81Bの両方について、ポーズ状態またはラン状態が設定されるものとする。
However, in the following, in order to simplify the description, it is assumed that the pause state or the run state is set for both the
なお、API関数PdPauseOtherAppIrp()は、PDフィルタ53をポーズ状態とすることに成功した場合、戻り値として1を返し、失敗した場合、戻り値として0を返す。同様に、API関数PdRunOtherAppIrp()も、PDフィルタ53をラン状態とすることに成功した場合、戻り値として1を返し、失敗した場合、戻り値として0を返す。
Note that the API function PdPauseOtherAppIrp () returns 1 as a return value when the
PD_API41は、API関数PdPauseOtherAppIrp()が呼び出されると、ポーズ状態となることを、PDフィルタ53に対して要求するAPI関数DeviceIoControl()を呼び出す。
When the API function PdPauseOtherAppIrp () is called, the
また、PD_API41は、API関数PdRunOtherAppIrp()が呼び出されると、ラン状態となることを、PDフィルタ53に対して要求するAPI関数DeviceIoControl()を呼び出す。
In addition, when the API function PdRunOtherAppIrp () is called, the
API関数DeviceIoControl()が呼び出されると、Win32サブシステム51は、NT入出力マネージャ52に対して、そのAPI関数DeviceIoControl()に応じた要求を行い、NT入出力マネージャ52は、その要求を、IRP_MJ_DEVICE_CONTROLのIRPに変換し、PDフィルタ53に供給する。
When the API function DeviceIoControl () is called, the
IRP_MJ_DEVICE_CONTROLでは、上述したように、ユーザ定義が可能なサブコードとしてのIOCTLが指定される。 In IRP_MJ_DEVICE_CONTROL, as described above, IOCTL is specified as a subcode that can be defined by the user.
図13は、PDフィルタ53が第2の機能の処理を行うときに、IRP_MJ_DEVICE_CONTROLで指定されるユーザ定義のIOCTLを示している。
FIG. 13 shows a user-defined IOCTL specified by IRP_MJ_DEVICE_CONTROL when the
なお、図13には、図12と同様に、いままで説明したユーザ定義のIOCTLを除くIOCTL(はじめて説明するユーザ定義のIOCTL)を示してある。 FIG. 13 shows IOCTLs (user-defined IOCTLs described for the first time) excluding the user-defined IOCTLs described so far, as in FIG.
図13では、IOCTL_PD_PAUSE_OTHERAPPIRP, IOCTL_PD_RUN_OTHERAPPIRPの2つのIOCTLが、ユーザ定義のIOCTLとして用意されている。 In FIG. 13, two IOCTLs IOCTL_PD_PAUSE_OTHERAPPIRP and IOCTL_PD_RUN_OTHERAPPIRP are prepared as user-defined IOCTLs.
IOCTL_PD_PAUSE_OTHERAPPIRPは、ポーズ状態となることを要求するAPI関数DeviceIoControl()(に応じた要求)に対応するIRP_MJ_DEVICE_CONTROLのIRPのサブコードとなるIOCTLで、PDフィルタ53をポーズ状態とすることを要求するIOCTLである。
IOCTL_PD_PAUSE_OTHERAPPIRP is an IOCTL that is an IRP subcode of IRP_MJ_DEVICE_CONTROL corresponding to the API function DeviceIoControl () (request according to) that requests to be in a pause state, and is an IOCTL that requests that the
IOCTL_PD_RUN_OTHERAPPIRPは、ラン状態となることを要求するAPI関数DeviceIoControl()に対応するIRP_MJ_DEVICE_CONTROLのIRPのサブコードとなるIOCTLで、PDフィルタ53をラン状態とすることを要求するIOCTLである。
IOCTL_PD_RUN_OTHERAPPIRP is an IOCTL that is an IRP subcode of IRP_MJ_DEVICE_CONTROL corresponding to the API function DeviceIoControl () that requests to be in the run state, and is an IOCTL that requests that the
なお、上述したように、IRP_MJ_DEVICE_CONTROLのIRPのサブコードとなるユーザ定義のIOCTLは、Win32サブシステム51が提供するAPI関数DeviceIoControl()を利用して、Win32サブシステム51からNT入出力マネージャ52に渡され、NT入出力マネージャ52において、IRP_MJ_DEVICE_CONTROLのIRPのサブコードとして指定される。
As described above, the user-defined IOCTL that is the IRP subcode of IRP_MJ_DEVICE_CONTROL is passed from the
次に、図14のフローチャートを参照して、PDフィルタ53が第2の機能を実装している場合の、図6におけるAVアプリケーション33、PD_API41、およびPDフィルタ53の処理の概要について説明する。
Next, an overview of processing of the
AVアプリケーション33は、例えば、ユーザが入力部17(図2)を操作することによって、光ディスク3に記録されたAVデータの再生や、光ディスク3へのAVデータの記録などが要求されると、ステップS91において、API関数PdPauseOtherAppIrp()を呼び出す。
When the
PD_API41は、ステップS101において、AVアプリケーション33によるAPI関数PdPauseOtherAppIrp()の呼び出しを受信して、ステップS102に進み、そのAPI関数PdPauseOtherAppIrp()の呼び出しに応じて、ポーズ状態となることを要求するAPI関数DeviceIoControl()を呼び出す。このAPI関数DeviceIoControl()の呼び出しによって、ポーズ状態となることを要求するIOCTL_PD_PAUSE_OTHERAPPIRPがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。
In step S101, the
PDフィルタ53は、ステップS111において、NT入出力マネージャ52からのIRPを受信し、そのIRPのIOCTL_PD_PAUSE_OTHERAPPIRPにしたがい、ポーズフラグを、ポーズ状態を表す、例えば、1にセットし、これにより、ポーズ状態となる。
In step S111, the
PDフィルタ53は、ポーズ状態となっている間、PD_API41のプロセス75(図6)以外のプロセスからのIRPの処理を停止し、PD_API41のプロセス75からのIRPのみを処理する。
While in the pause state, the
即ち、例えば、AVアプリケーション33が、ステップS92において、光ディスク3に対するアクセス要求としての、例えば、ファイルの読み出しを要求するAPI関数ReadFile()などを呼び出すと、PD_API41は、ステップS103において、そのAPI関数ReadFile()の呼び出しを受信し、ステップS104に進む。
That is, for example, when the
ステップS104では、PD_API41は、AVアプリケーション33からのAPI関数ReadFile()の呼び出しに応じて、同一のAPI関数ReadFile()を呼び出し、この呼び出しによって、ファイルの読み出しを要求するIRP_MJ_READのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。
In step S104, the
PDフィルタ53は、ステップS112において、NT入出力マネージャ52からのIRP_MJ_READのIRPを受信して、ステップS113に進む。ステップS113では、PDフィルタ53は、ステップS112で受信したIRP、即ち、AVアプリケーション33におけるPD_API41のプロセス75からのIRPを、キュー81(図6)に記憶させ、さらに、キュー81から読み出し、PD_FS54に供給する。
In step S112, the
以上のように、PDフィルタ53では、AVアプリケーション33のプロセス75からのIRPは、即座に処理される。
As described above, in the
一方、AVアプリケーション33以外のアプリケーション31や32のプロセス71乃至73が、それぞれ、ステップS81乃至S83において、光ディスク3に対するアクセス要求としての、例えば、ファイルの読み出しを要求するAPI関数ReadFile()などを呼び出すと、この呼び出しによって、ファイルの読み出しを要求するIRP_MJ_READのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。
On the other hand, the processes 71 to 73 of the
PDフィルタ53は、ステップS114乃至S116において、それぞれ、プロセス71乃至73がステップS81乃至S83で行ったAPI関数ReadFile()の呼び出しに対応するIRPを受信し、キュー81に記憶させる。
In steps S114 to S116, the
そして、いまの場合、PDフィルタ53はポーズ状態となっているので、PDフィルタ53は、ステップS114乃至S116でキュー81に記憶させたIRP、即ち、AVアプリケーション33のプロセス75以外のプロセスであるプロセス71乃至73からのIRPを処理しない。つまり、PDフィルタ53では、アプリケーション31のプロセス71および72や、アプリケーション32のプロセス73からのIRPは、PD_FS54に供給されず、キュー81に記憶されたままとされる。
In this case, since the
その後、例えば、ユーザが入力部17(図2)を操作することによって、光ディスク3に記録されたAVデータの再生などの停止、あるいは、AVアプリケーション33の終了などが要求されると、AVアプリケーション33は、ステップS93において、API関数PdRunOtherAppIrp()を呼び出す。
Thereafter, for example, when the user operates the input unit 17 (FIG. 2) to request the stop of reproduction of AV data recorded on the optical disc 3 or the termination of the
PD_API41は、ステップS105において、AVアプリケーション33によるAPI関数PdRunOtherAppIrp()の呼び出しを受信して、ステップS106に進み、そのAPI関数PdRunOtherAppIrp()の呼び出しに応じて、ラン状態となることを要求するAPI関数DeviceIoControl()を呼び出す。このAPI関数DeviceIoControl()の呼び出しによって、ラン状態となることを要求するIOCTL_PD_RUN_OTHERAPPIRPがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。
In step S105, the
PDフィルタ53は、ステップS117において、NT入出力マネージャ52からのIRPを受信し、そのIRPのIOCTL_PD_RUN_OTHERAPPIRPにしたがい、ポーズフラグを、ラン状態を表す、例えば、0にリセットし、これにより、ラン状態となる。
In step S117, the
PDフィルタ53は、ラン状態となると、PD_API41のプロセス75(図6)以外のプロセスからのIRPの処理を開始(再開)する。
When the
即ち、いまの場合、PDフィルタ53では、ステップS114乃至S116で受信したプロセス71乃至73それぞれからのIRPが、処理されずにキュー81に記憶されたままとなっている。
In other words, in this case, in the
そこで、PDフィルタ53は、ステップS118乃至S120において、それぞれ、キュー81に記憶されたままとなっていたプロセス71乃至73からのIRPを、キュー81から読み出し、PD_FS54に供給する。
Therefore, the
そして、その後、AVアプリケーション33以外のアプリケーション31や32のプロセス71乃至73のうちのいずれかが、ステップS84において、光ディスク3に対するアクセス要求としての、例えば、ファイルの読み出しを要求するAPI関数ReadFile()などを呼び出すと、この呼び出しによって、ファイルの読み出しを要求するIRP_MJ_READのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。
Then, after that, any of the
PDフィルタ53は、ステップS121において、プロセス71乃至73のうちのいずれかがステップS84で行ったAPI関数ReadFile()の呼び出しに対応するIRPを受信し、キュー81に記憶させる。
In step S121, the
そして、いまの場合、PDフィルタ53はラン状態になっているので、PDフィルタ53では、ステップS121でキュー81に記憶されたIRPが、ステップS122において読み出され、PD_FS54に供給される。
In this case, since the
以上のように、PDフィルタ53は、ポーズ状態では、AVアプリケーション33からのIRPのみを、PD_FS54に出力する。そして、PDフィルタ53は、ポーズ状態が解除されると、即ち、ラン状態となると、AVアプリケーション33以外のアプリケーションからのIRPも、PD_FS54に出力する。
As described above, the
次に、図15および図16のフローチャートを参照して、図6のPDフィルタ53による第2の機能の処理について説明する。
Next, processing of the second function by the
まず、図15のフローチャートを参照して、第2の機能を実装する図6のPDフィルタ53において、IRPが受信されてから、そのIRPがキュー81に記憶されるまでの処理(キュー81への入力処理)について説明する。
First, referring to the flowchart of FIG. 15, the
図15のフローチャートにしたがった処理によれば、ポーズフラグの設定に関するステップS156乃至S159の処理を除き、図10のフローチャートで説明したのと同様の処理が行われる。 According to the processing according to the flowchart of FIG. 15, processing similar to that described with reference to the flowchart of FIG. 10 is performed except for the processing of steps S156 to S159 related to the setting of the pause flag.
即ち、アプリケーション31乃至33のうちのいずれかのプロセス(図6では、プロセス71乃至75のうちのいずれか)において、ドライブ2に対するI/O関係の処理を要求する(I/O要求を行う)API関数が呼び出されると、そのAPI関数の呼び出しに応じて、NT入出力マネージャ52は、そのAPI関数に対応するIRPを、PDフィルタ53に供給する。
That is, I / O-related processing for the drive 2 is requested (I / O request is performed) in any one of the
PDフィルタ53では、フィルタコア53Aが、ステップS151において、API関数を呼び出したプロセスからのIRP(プロセスによるAPI関数の呼び出しに応じて、NT入出力マネージャ52から供給されたIRP)を受信して、ステップS152に進み、そのIRPが、IOCTLとして、IOCTL_PD_SET_PROCESSID(図8)が指定されているIRP(IRP_MJ_DEVICE_CONTROLのIRP)であるかどうかを判定する。
In the
ステップS152において、プロセスからのIRP(ステップS151でフィルタコア53Aが受信したIRP)が、IOCTL_PD_SET_PROCESSIDが指定されているIRPであると判定された場合、ステップS153に進み、フィルタコア53Aは、そのIRPに含まれるプロセスID、つまり、そのIRPに対応するAPI関数を呼び出したプロセスのプロセスIDを登録(記憶)し、次のIRPの供給を待って、ステップS151に戻る。
If it is determined in step S152 that the IRP from the process (the IRP received by the
即ち、ステップS153では、ステップS151でフィルタコア53Aが受信したIRPに対応するAPI関数を呼び出したプロセスのプロセスIDが、登録プロセスIDとされる。
That is, in step S153, the process ID of the process that called the API function corresponding to the IRP received by the
一方、ステップS152において、プロセスからのIRPが、IOCTL_PD_SET_PROCESSIDが指定されているIRPでないと判定された場合、ステップS154に進み、フィルタコア53Aは、そのIRPが、IOCTLとして、IOCTL_PD_DELETE_PROCESSID(図8)が指定されているIRP(IRP_MJ_DEVICE_CONTROLのIRP)であるかどうかを判定する。
On the other hand, if it is determined in step S152 that the IRP from the process is not an IRP for which IOCTL_PD_SET_PROCESSID is specified, the process proceeds to step S154, and the
ステップS154において、プロセスからのIRPが、IOCTL_PD_DELETE_PROCESSIDが指定されているIRPであると判定された場合、ステップS155に進み、フィルタコア53Aは、登録プロセスIDを削除(消去)し、次のIRPの供給を待って、ステップS151に戻る。
If it is determined in step S154 that the IRP from the process is an IRP for which IOCTL_PD_DELETE_PROCESSID is specified, the process proceeds to step S155, and the
また、ステップS154において、プロセスからのIRPが、IOCTL_PD_DELETE_PROCESSIDが指定されているIRPでないと判定された場合、ステップS156に進み、フィルタコア53Aは、プロセスからのIRPが、IOCTLとして、IOCTL_PD_PAUSE_OTHERAPPIRP(図13)が指定されているIRP(IRP_MJ_DEVICE_CONTROLのIRP)であるかどうかを判定する。
If it is determined in step S154 that the IRP from the process is not an IRP for which IOCTL_PD_DELETE_PROCESSID is specified, the process proceeds to step S156, and the
ステップS156において、プロセスからのIRPが、IOCTL_PD_PAUSE_OTHERAPPIRPが指定されているIRPであると判定された場合、ステップS157に進み、フィルタコア53Aは、変数であるポーズフラグを、ポーズ状態を表す1にセットし、次のIRPの供給を待って、ステップS151に戻る。これにより、フィルタコア53A(PDフィルタ53)は、ポーズ状態となる。
If it is determined in step S156 that the IRP from the process is an IRP for which IOCTL_PD_PAUSE_OTHERAPPIRP is specified, the process proceeds to step S157, and the
また、ステップS156において、プロセスからのIRPが、IOCTL_PD_PAUSE_OTHERAPPIRPが指定されているIRPでないと判定された場合、ステップS158に進み、フィルタコア53Aは、プロセスからのIRPが、IOCTLとして、IOCTL_PD_RUN_OTHERAPPIRP(図13)が指定されているIRP(IRP_MJ_DEVICE_CONTROLのIRP)であるかどうかを判定する。
If it is determined in step S156 that the IRP from the process is not an IRP for which IOCTL_PD_PAUSE_OTHERAPPIRP is specified, the process advances to step S158, and the
ステップS158において、プロセスからのIRPが、IOCTL_PD_RUN_OTHERAPPIRPが指定されているIRPであると判定された場合、ステップS159に進み、フィルタコア53Aは、変数であるポーズフラグを、ラン状態を表す0にリセットし、次のIRPが供給されるのを待って、ステップS151に戻る。これにより、フィルタコア53Aは、ラン状態となる。
If it is determined in step S158 that the IRP from the process is an IRP for which IOCTL_PD_RUN_OTHERAPPIRP is specified, the process proceeds to step S159, and the
また、ステップS158において、プロセスからのIRPが、IOCTL_PD_RUN_OTHERAPPIRPが指定されているIRPでないと判定された場合、ステップS160に進み、フィルタコア53Aは、そのIRPが、光ディスク3へのアクセスを要求するアクセス要求のIRPであるかどうかを判定する。
If it is determined in step S158 that the IRP from the process is not an IRP for which IOCTL_PD_RUN_OTHERAPPIRP is specified, the process proceeds to step S160, and the
ステップS160において、プロセスからのIRPが、アクセス要求のIRPでないと判定された場合、即ち、プロセスからのIRPが、例えば、PDフィルタ53で設定されるIRPプライオリティの変更を要求するIOCTL_PD_SET_RRIORITY(図8)が、IOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPや、PDフィルタ53で設定されるIRPプライオリティを要求するIOCTL_PD_GET_RRIORITY(図8)が、IOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPなどである場合、ステップS161に進み、フィルタコア53Aは、図10のステップS57における場合と同様に、そのIRPに応じた処理を行う。さらに、フィルタコア53Aは、その処理結果に対応する応答を、NT入出力マネージャ52およびWin32サブシステム51を介して、IRPに対応するAPI関数を呼び出したプロセスに返し、次のIRPの供給を待って、ステップS151に戻る。
If it is determined in step S160 that the IRP from the process is not the IRP of the access request, that is, the IRP from the process requests a change in the IRP priority set by the
一方、ステップS160において、プロセスからのIRPが、アクセス要求のIRPであると判定された場合、即ち、プロセスからのIRPが、例えば、ファイルの読み出しを要求するIRP_MJ_READのIRPや、ファイルの書き込みを要求するIRP_MJ_WRITEのIRPである場合、ステップS162に進み、フィルタコア53Aは、プロセスからのIRPに含まれるプロセスID、即ち、そのIRPに対応するAPI関数を呼び出したプロセスのプロセスIDが、登録プロセスIDに一致するかどうかを判定する。
On the other hand, when it is determined in step S160 that the IRP from the process is the IRP of the access request, that is, the IRP from the process requests, for example, an IRP of IRP_MJ_READ that requests reading of a file or a file write. If the IRP_MJ_WRITE is an IRP, the process advances to step S162, and the
ステップS162において、プロセスからのIRPに含まれるプロセスIDが、登録プロセスIDに一致しないと判定された場合、ステップS163に進み、フィルタコア53Aは、プロセスからのIRPに対して、最小のIRPプライオリティを設定し、ステップS165に進む。
When it is determined in step S162 that the process ID included in the IRP from the process does not match the registered process ID, the process proceeds to step S163, and the
また、ステップS162において、プロセスからのIRPに含まれるプロセスIDが、登録プロセスIDに一致すると判定された場合、ステップS164に進み、フィルタコア53Aは、プロセスからのIRPに対して、最大のIRPプライオリティを設定し、ステップS165に進む。
If it is determined in step S162 that the process ID included in the IRP from the process matches the registered process ID, the process proceeds to step S164, and the
ステップS165では、フィルタコア53Aは、ステップS163またはS164でIRPプライオリティを設定した、プロセスからのIRPを、キュー81へ出力して記憶させ、次のIRPの供給を待って、ステップS151に戻る。
In step S165, the
次に、図16のフローチャートを参照して、第2の機能を実装する図6のPDフィルタ53において、キュー81に記憶されたIRPを対象に行われる処理(キュー81からの出力処理)について説明する。
Next, with reference to the flowchart of FIG. 16, processing (output processing from the queue 81) performed on the IRP stored in the
PDフィルタ53では、フィルタコア53Aが、ステップS171において、ポーズフラグが1にセットされているかどうかを判定する。
In the
ステップS171において、ポーズフラグが1にセットされていると判定された場合、即ち、PDフィルタ53がポーズ状態となっている場合、ステップS172に進み、キュー81に、最大のIRPプライオリティ(IRPプライオリティとして取り得る値のうちの最大値))が設定されているIRPがあるかどうかを判定する。
If it is determined in step S171 that the pause flag is set to 1, that is, if the
ステップS172において、キュー81に、最大のIRPプライオリティが設定されているIRPがあると判定された場合、即ち、登録プロセスIDと一致するプロセスIDのプロセスからのIRPが、キュー81に記憶されている場合、ステップS173に進み、フィルタコア53Aは、キュー81に記憶されている、最大のIRPプライオリティが設定されているIRPを処理し、ステップS171に戻る。即ち、ステップS173では、フィルタコア53Aは、最大のIRPプライオリティが設定されているIRPを、キュー81から読み出し、NT入出力マネージャ52を介して、PD_FS54に出力する。
In step S 172, when it is determined that there is an IRP in which the maximum IRP priority is set in the
また、ステップS172において、キュー81に、最大のIRPプライオリティが設定されているIRPがないと判定された場合、即ち、登録プロセスIDと一致するプロセスIDのプロセスからのIRPが、キュー81に記憶されていない場合、ステップS173をスキップして、ステップS171に戻る。
In step S172, when it is determined that there is no IRP in which the maximum IRP priority is set in the
従って、PDフィルタ53がポーズ状態になっている場合は、登録プロセスIDと一致するプロセスIDのプロセスからのIRPが、キュー81に記憶されているかどうかにかかわらず、登録プロセスIDと一致しないプロセスIDのプロセスからのIRPは、PD_FS54に出力されない。
Therefore, when the
一方、ステップS171において、ポーズフラグが0にリセットされていると判定された場合、即ち、PDフィルタ53がラン状態となっている場合、ステップS174,S175に順次進み、図11のステップS71,S72における場合とそれぞれ同様の処理が行われる。
On the other hand, if it is determined in step S171 that the pause flag is reset to 0, that is, if the
即ち、ステップS174において、フィルタコア53Aは、キュー81に記憶されたIRPから、IRPプライオリティが最も高い(最も大きい)ものを検索し、ステップS175に進む。
That is, in step S174, the
ステップS175では、フィルタコア53Aは、ステップS174の検索によって得られたIRPプライオリティが最も高いIRPを処理し、ステップS171に戻る。即ち、ステップS175では、フィルタコア53Aは、IRPプライオリティが最も高いIRPを、優先的に、キュー81から読み出し、NT入出力マネージャ52を介して、PD_FS54に出力する。
In step S175, the
従って、PDフィルタ53がラン状態の場合は、PDフィルタ53では、図11における場合と同様に、キュー81からIRPが読み出され、PD_FS54に出力される。
Therefore, when the
以上のように、PDフィルタ53では、登録プロセスIDと一致するプロセスIDのプロセスからのIRPには、最大のIRPプライオリティを設定し、登録プロセスIDと一致しないプロセスIDのプロセスからのIRPには、最小のIRPプライオリティを設定する。
As described above, the
そして、PDフィルタ53は、IRPプライオリティが設定されたIRPを、キュー81に記憶させ、ラン状態の場合は、キュー81に記憶されたIRPを、IRPプライオリティにしたがって処理するが、ポーズ状態の場合は、キュー81に記憶されたIRPのうち、最大のIRPプライオリティが設定されているIRP、即ち、登録プロセスIDと一致するプロセスIDのプロセスからのIRPのみを処理する。
Then, the
従って、AVアプリケーション33(図6)では、そのプロセス75によってロードされたPD_APL41において、そのプロセス75のプロセスIDの登録を、PDフィルタ53に要求し、さらに、AVアプリケーション33がAVデータの記録や再生などを行うときに、ポーズ状態となることを、PDフィルタ53に要求することで、PDフィルタ53では、PD_APL41のプロセス75からのIRPに対して、最大のIRPプライオリティが設定され、さらに、その最大のIPRプライオリティが設定されたIRP、即ち、PD_APL41のプロセス75からのIRPのみが処理される(PD_FS54に出力される)。
Therefore, the AV application 33 (FIG. 6) requests the
このように、PD_APL41のプロセス75からのIRPのみが処理されるので、アプリケーション31や32からのIRPの処理を待つことや、そのIRPの処理によって生じるドライブ2のシーク等によって、AVアプリケーション33による光ディスク3に対するデータの読み書きが妨げられることを防止することができる。これにより、AVアプリケーション33において、AVデータを、リアルタイムで光ディスク3に記録し、また再生することができる。
Since only the IRP from the process 75 of the
ここで、第1の機能によれば、PD_APL41のプロセス75からのIRPが、キュー81に記憶されていなければ、アプリケーション31や32(のプロセス)からのIRPは、PDフィルタ53からPD_FS54に出力されうる。これに対して、第2の機能によれば、PDフィルタ53がポーズ状態となっている場合には、PD_APL41のプロセス75からのIRPが、キュー81に記憶されているときは勿論、記憶されていないときであっても、アプリケーション31や32(のプロセス)からのIRPは、PDフィルタ53からPD_FS54に出力されない。
Here, according to the first function, if the IRP from the process 75 of the
なお、図15および図16で説明した場合においては、ポーズ状態となっているPDフィルタ53において、特定のIRPとして、最大のIRPプライオリティが設定されたIRPのみを、PD_FS54に出力するようにしたが、その他、例えば、登録プロセスIDと一致するプロセスIDのIRPを、特定のIRPとして、その登録プロセスIDと一致するプロセスIDのIRPのみを、PD_FS54に出力するようにすることが可能である。即ち、PDフィルタ53では、IRPプライオリティの設定を行わずに、単に、登録プロセスIDと一致するプロセスIDのIRPのみを、PD_FS54に出力するようにすることが可能である。
In the case described with reference to FIGS. 15 and 16, only the IRP for which the maximum IRP priority is set is output to the
次に、AVデータをリアルタイムで読み書きすることを保証するためのPDフィルタ53の第3の機能について説明する。
Next, a third function of the
即ち、第3の機能によれば、PDフィルタ53は、AVアプリケーション33以外のアプリケーション、即ち、アプリケーション31および32(のプロセス)からのIRPの、PD_FS54への出力をオン/オフする機能的なスイッチを有し、その機能的なスイッチによって、アプリケーション31および32からのIRPを、PD_FS54に出力しないようにする。これにより、PDフィルタ53は、AVアプリケーション33以外のアプリケーション31および32からのIRPを、PD_FS54に出力せず、AVアプリケーション33からのIRPだけを、PD_FS54に出力し、AVアプリケーション33によるAVデータのリアルタイムでの読み書きを保証する。
That is, according to the third function, the
図17は、以上のような第3の機能を実装したPDフィルタ53の構成例を示している。
FIG. 17 shows a configuration example of the
図17において、PDフィルタ53のフィルタコア53は、AVアプリケーション33以外のアプリケーション31および32からのIRPの、PD_FS54への出力をオン/オフする機能的なスイッチ(Switch)としてのスイッチ101を有している。
In FIG. 17, the
スイッチ101は、例えば、OS30の起動(Boot)時や、ドライブ2への光ディスク3の装着(Inject)時に、レジストリ58に記憶されたスイッチ設定情報にしたがって、オンまたはオフ状態となる。なお、スイッチ101の状態は、例えば、PC1において、ドライブ2に対応するボリュームのマウント(Mount)が行われた後は、切り換えることができないようになっている。
The switch 101 is turned on or off according to the switch setting information stored in the
ここで、スイッチ設定情報は、例えば、AVアプリケーション33のインストール時などにレジストリ58に記憶される。即ち、AVアプリケーション33のインストール時に、スイッチ101をオンまたはオフのいずれの状態とするかをユーザに選択してもらうようにし、その選択されたスイッチ101の状態が、スイッチ設定情報として、レジストリ58に記憶される。なお、レジストリ58に記憶されたスイッチ設定情報は、AVアプリケーション33のインストール後、そのAVアプリケーション33のオプション設定を行う画面等において変更することができるようにすることが可能である。
Here, the switch setting information is stored in the
スイッチ101は、オン状態となっている場合、すべてのアプリケーション(図17では、アプリケーション31乃至33)からのIRPを、PD_FS54に出力する。
When the switch 101 is in the on state, the switch 101 outputs IRPs from all applications (
一方、スイッチ101は、オフ状態となっている場合、AVアプリケーション33におけるPD_API41(のプロセス)からのIRPのみを、PD_FS54に出力し、他のアプリケーション31および32(のプロセス)に対しては、ドライブ2(に装着された光ディスク3)に対応するボリューム(のファイルシステム)を偽装する。これにより、スイッチ101は、他のアプリケーション31および32からのIRPを、PD_FS54に出力せずに済むようにする。
On the other hand, when the switch 101 is in the OFF state, only the IRP from the PD_API 41 (or its process) in the
ここで、オフ状態となっているスイッチ101は、PD_API41以外からのIRPに対して、ボリュームがマウントされているが、そのボリュームは、読み出し専用(Read Only)で、さらに、そのボリュームには、ファイル(File)およびディレクトリ(Directory)が存在しない旨のステータス(Status)を、応答として返す。
Here, the switch 101 in the OFF state has a volume mounted for an IRP other than the
これにより、スイッチ101がオフ状態の場合においては、ドライブ2は、例えば、Windows(R) Explorer上では、ファイルおよびディレクトリがないボリュームで、さらに、ファイルのドロップ、イジェクト(Eject)操作、フォーマット(Format)操作をすることができないボリュームとして扱われる。 As a result, when the switch 101 is in the OFF state, the drive 2 is a volume having no file or directory on Windows (R) Explorer, and further, a file drop, an eject operation, a format (Format) ) It is treated as a volume that cannot be operated.
次に、図18のフローチャートを参照して、図17のPDフィルタ53による第3の機能の処理について説明する。
Next, processing of the third function by the
例えば、OS30が起動され、あるいは、光ディスク3がドライブ2に装着されると、ステップS191において、フィルタコア53Aは、レジストリ58から、スイッチ設定情報を取得し、ステップS192に進む。
For example, when the
ステップS192では、フィルタコア53Aは、スイッチ設定情報にしたがって、スイッチ101をオンまたはオフ状態に設定する。
In step S192, the
そして、フィルタコア53Aは、アプリケーション31乃至33のうちのいずれかから、IRPが供給されるのを待って、ステップS193に進み、そのIRPを受信して、ステップS194に進む。
Then, the
ステップS194では、フィルタコア53Aは、(直前に行われた)ステップS193で受信されたIRPが、AVアプリケーション33(のPD_API41)からのIRPであるかどうかを判定する。ステップS194において、ステップS193で受信されたIRPが、AVアプリケーション33からのIRPであると判定された場合、ステップS195に進み、フィルタコア53Aは、そのIRPを、PD_FS54に出力し、アプリケーション31乃至33のうちのいずれかから、次のIRPが供給されるのを待って、ステップS193に戻る。
In step S194, the
また、ステップS194において、ステップS193で受信されたIRPが、AVアプリケーション33からのIRPでないと判定された場合、即ち、ステップS193で受信されたIRPが、アプリケーション31または32からのIRPである場合、ステップS196に進み、フィルタコア53Aは、スイッチ101がオフ状態になっているかどうかを判定する。
If it is determined in step S194 that the IRP received in step S193 is not an IRP from the
ステップS196において、スイッチ101がオフ状態になっていないと判定された場合、即ち、スイッチ101がオン状態になっている場合、ステップS195に進み、フィルタコア53Aは、ステップS193で受信されたIRPを、PD_FS54に出力し、アプリケーション31乃至33のうちのいずれかから、次のIRPが供給されるのを待って、ステップS193に戻る。
If it is determined in step S196 that the switch 101 is not in the off state, that is, if the switch 101 is in the on state, the process proceeds to step S195, and the
また、ステップS196において、スイッチ101がオフ状態になっていると判定された場合、ステップS197に進み、スイッチ101は、ステップS193で受信されたIRPの出力元であるアプリケーション31または32に対して、ファイルシステムを偽装したファイルシステム偽装応答、即ち、例えば、上述したように、ボリュームがマウントされているが、そのボリュームは、読み出し専用で、さらに、そのボリュームには、ファイルおよびディレクトリが存在しない旨のステータスを返す。そして、アプリケーション31乃至33のうちのいずれかから、次のIRPが供給されるのを待って、ステップS193に戻り、以下、同様の処理が繰り返される。
If it is determined in step S196 that the switch 101 is in the OFF state, the process advances to step S197, and the switch 101 determines whether or not the
以上のように、PDフィルタ53では、スイッチ101がオフ状態の場合、AVアプリケーション33からのIRPだけが、PD_FS54に出力されるので、アプリケーション31や32からのIRPの処理を待つことや、そのIRPの処理により生じるドライブ2のシークによって、AVアプリケーション33による光ディスク3に対するデータの読み書きが妨げられることを防止することができる。これにより、AVアプリケーション33において、AVデータを、リアルタイムで光ディスク3に記録し、また再生することができる。
As described above, in the
なお、ステップS194において、IRPが、AVアプリケーション33(のPD_API41をロードしたプロセス75)からのIRPかどうかの判定は、例えば、上述したように、プロセス275のプロセスIDを、登録プロセスIDとしてPDフィルタ53にあらかじめ登録しておき、その登録プロセスIDと、IRPのプロセスIDとが一致するか否かによって行うことが可能である。
In step S194, whether or not the IRP is the IRP from the AV application 33 (the process 75 loaded with the PD_API 41) is determined by, for example, using the PD filter with the process ID of the process 275 as the registration process ID as described above. It is possible to perform registration based on whether or not the registered process ID and the IRP process ID match.
また、上述の場合には、第1乃至第3の機能をPDフィルタ53に実装することとしたが、第1乃至第3の機能は、PDフィルタ53ではなく、PD_FS54に実装することも可能である。
In the above case, the first to third functions are mounted on the
ところで、PD_FS54(図4)は、図5のステップS4で説明したように、PDフィルタ53からのIRPによって要求されているデータについて、NTキャッシュマネージャ59のキャッシュ機能を利用するのに必要な処理としてのキャッシュ処理を行う。
By the way, as described in step S4 of FIG. 5, the PD_FS 54 (FIG. 4) is a process necessary for using the cache function of the
そして、例えば、PDフィルタ53からのIRPによって要求されているデータが、NTキャッシュマネージャ59にキャッシュされている場合は、そのキャッシュされているデータが、PD_FS54から、PDフィルタ53に返されるが、PDフィルタ53からのIRPによって要求されているデータが、NTキャッシュマネージャ59にキャッシュされていない場合は、PDフィルタ53からのIRPは、PD_FS54からPDストレージ55に出力される。
For example, when the data requested by the IRP from the
従って、PDフィルタ53からのIRPによって要求されているデータが、NTキャッシュマネージャ59にキャッシュされていない場合は、キャッシュ機能がないケースと比較すると、キャッシュ処理の分、即ち、CPU12(図2)がキャッシュ処理の処理ルーチンを実行する分だけ、いわば余計なオーバヘッドが生じることとなる。
Therefore, when the data requested by the IRP from the
このオーバヘッドは、PD_FS54からPDストレージ55へのIRPの出力を遅延させる。そして、AVアプリケーション33からのIRPが、PD_FS54からPDストレージ55への出力時に遅延することは、AVデータのリアルタイムでの再生や記録を妨げる要因となることから、AVアプリケーション33からのIRPについては、そのような遅延がないことが望ましい。
This overhead delays the output of the IRP from the
このようなIRPの遅延は、キャッシュ機能を利用しないことによって防止することができる。 Such an IRP delay can be prevented by not using the cache function.
一方、キャッシュ機能一切を利用しない場合には、PDフィルタ53からのIRPは、すべて、PD_FS54からPDストレージ55に出力される。即ち、アプリケーション31乃至33からのIRPは、すべて、PDフィルタ53から、PD_FS54を介して、PDストレージ55に出力される。
On the other hand, when no cache function is used, all IRPs from the
即ち、この場合、AVアプリケーション33からのIRPの他、AVアプリケーション33以外のアプリケーションであるアプリケーション31や32からのIRPも、すべて、PDフィルタ53から、PD_FS54を介して、PDストレージ55に出力される。そして、アプリケーション31や32からのIRPによって要求されるデータの読み出し等のために、ドライブ2においてシークが発生する。
That is, in this case, in addition to the IRP from the
このシークは、AVアプリケーション33からのIRPによって要求されるAVデータの読み出し等をリアルタイムで行うことを妨げることとなる。
This seek prevents reading of AV data requested by the IRP from the
一方、キャッシュ機能を利用する場合には、アプリケーション31や32からのIRPによって要求されているデータが、NTキャッシュマネージャ59にキャッシュされていれば、そのキャッシュされているデータが、PD_FS54から、PDフィルタ53に返される。この場合、ドライブ2では、アプリケーション31や32からのIRPによって要求されているデータを光ディスク3から読み出す等のためのシークが発生しない。
On the other hand, when the cache function is used, if the data requested by the IRP from the
以上から、AVアプリケーション33においては、キャッシュ機能を利用しないことにより、キャッシュ処理による遅延を防止することができ、その結果、AVデータの再生や記録のリアルタイム性を向上させることができる。
From the above, in the
さらに、AVアプリケーション33以外のアプリケーション31および32においては、キャッシュ機能を利用することにより、ドライブ2でのシークの発生を低減することができ、その結果、やはり、AVデータの再生や記録のリアルタイム性を向上させることができる。
Furthermore, in the
そこで、PDフィルタ53には、アプリケーション31および32からのIRPについては、キャッシュ機能を利用するように処理する一方、AVアプリケーション33からのIRPについては、キャッシュ機能の利用の有無を設定し、その設定結果にしたがって処理する、いわばキャッシュオン/オフ(cache ON/OFF)機能を実装することができる。
Therefore, the
図19は、キャッシュオン/オフ機能を実装したPDフィルタ53の構成例を示している。
FIG. 19 shows a configuration example of the
なお、キャッシュオン/オフ機能は、PD_API41をロードするAVアプリケーション33にのみ提供され、アプリケーション31および32は、常時、キャッシュ機能を利用する。即ち、キャッシュオン/オフ機能は、アプリケーション31および32には、いわば関係ない。このため、図19では、アプリケーション31乃至33のうちの、キャッシュオン/オフ機能が提供されるAVアプリケーション33だけを図示してある。
Note that the cache on / off function is provided only to the
図19において、PDフィルタ53は、コマンドバッファ111を有している。コマンドバッファ111は、例えば、AVアプリケーション33(のPD_API41)からのIRP、即ち、AVアプリケーション33のPD_API41がAPI関数を呼び出すことによってNT入出力マネージャ52が出力するIRPを一時記憶する。
In FIG. 19, the
また、図19のPDフィルタ53では、フィルタコア53Aが、AVアプリケーション33(のPD_API41)によるキャッシュ機能の利用の有無を設定し、その設定結果にしたがって、コマンドバッファ111に記憶されたAVアプリケーション33からのIRPを処理する。
In the
即ち、フィルタコア53Aは、キャッシュ機能の利用の有無の設定が、キャッシュ機能を利用する設定になっている場合、コマンドバッファ111に記憶されたAVアプリケーション33からのIRPを、PD_FS54に出力するに際し、PD_FS54においてキャッシュ機能を利用するように、IRPの出力制御を行う。
That is, the
また、フィルタコア53Aは、キャッシュ機能の利用の有無の設定が、キャッシュ機能を利用しない設定になっている場合、コマンドバッファ111に記憶されたAVアプリケーション33からのIRPを、PD_FS54に出力するに際し、PD_FS54においてキャッシュ機能を利用せずに、PDストレージ55に出力されるように、IRPの出力制御を行う。
Further, the
次に、図20は、PDフィルタ53がキャッシュオン/オフ機能の処理を行うときに、PD_API41が、PDフィルタ53を制御するために、AVアプリケーション33に提供する制御用(PDフィルタ53の制御用)のAPI(関数)を示している。
Next, FIG. 20 shows a control (
図20においては、PD_API41が、PDフィルタ53を制御するために、AVアプリケーション33に提供する制御用のAPI関数として、PdOpenFile(), PdCloseFile(), PdReadFile(), PdWriteFile()の4つが用意されている。
In FIG. 20, four API functions PdOpenFile (), PdCloseFile (), PdReadFile (), and PdWriteFile () are prepared as control API functions provided to the
ここで、図20の4つのAPI関数PdOpenFile(), PdCloseFile(), PdReadFile(), PdWriteFile()は、いずれも、ファイル操作を行うためのファイルストリーム(File Stream)用のAPI関数であり、同様のAPI関数が、Win32サブシステム51でも提供されている。
Here, the four API functions PdOpenFile (), PdCloseFile (), PdReadFile (), and PdWriteFile () in FIG. 20 are all API functions for a file stream (File Stream) for performing file operations. These API functions are also provided in the
即ち、PD_API41は、Win32サブシステム51が提供するファイルストリーム用のAPI関数とは別に、固有のファイルストリーム用のAPI関数PdOpenFile(), PdCloseFile(), PdReadFile(), PdWriteFile()を提供する。
That is, the
API関数PdOpenFile()は、ファイルのオープンを要求するAPI関数で、オープンしようとするファイルのファイル名(パス名を含む)、そのファイルをオープンするときのオープンモード(例えば、参照のみ行うモード等)、およびキャッシュ機能の利用の有無を表すキャッシュ情報を、引数としてとる。 The API function PdOpenFile () is an API function that requests the opening of a file. The file name (including the path name) of the file to be opened, and the open mode when the file is opened (for example, a mode in which only the reference is performed). , And cache information indicating whether or not the cache function is used is taken as an argument.
そして、API関数PdOpenFile()を、引数のファイル名、オープンモード、およびキャッシュ情報を指定して呼び出すことにより、引数で指定されているファイル名のファイルが、引数で指定されているオープンモードでオープンされる。さらに、API関数PdOpenFile()は、引数のキャッシュ情報によって、PDフィルタ53(のフィルタコア53A)に、キャッシュ機能の利用の有無を設定させる。API関数PdOpenFile()は、ファイルのオープンに成功した場合、戻り値として、そのオープンしたファイルのファイルハンドルを返し、ファイルのオープンに失敗した場合、戻り値として、0xffffffffを返す。なお、0xは、その後に続く値が、16進数であることを表す。
Then, by calling the API function PdOpenFile () specifying the argument file name, open mode, and cache information, the file with the file name specified by the argument is opened in the open mode specified by the argument. Is done. Further, the API function PdOpenFile () causes the PD filter 53 (the
API関数PdCloseFile()は、ファイルのクローズを要求するAPI関数で、クローズしようとするファイルのファイルハンドルを、引数としてとる。そして、API関数PdCloseFile()を、引数のファイルハンドルを指定して呼び出すことにより、そのファイルハンドルによって特定されるファイルがクローズする。API関数PdCloseFile()は、ファイルのクローズに成功した場合、戻り値として1を返し、ファイルのクローズに失敗した場合、戻り値として0を返す。 The API function PdCloseFile () is an API function that requests closing of a file, and takes a file handle of the file to be closed as an argument. Then, by calling the API function PdCloseFile () specifying the argument file handle, the file specified by the file handle is closed. The API function PdCloseFile () returns 1 as a return value when the file is successfully closed, and 0 as a return value when the file fails to close.
API関数PdReadFile()は、ファイルからのデータの読み出しを要求するAPI関数で、データを読み出そうとするファイルのファイルハンドル、ファイルから読み出したデータを一時記憶するバッファへのポインタであるバッファポインタ、およびファイルから読み出すデータのデータ量としてのバイト数を、引数としてとる。そして、API関数PdReadFile()を、引数のファイルハンドル、バッファポインタ、およびバイト数を指定して呼び出すことにより、そのファイルハンドルによって特定されるファイルのデータが、そのバイト数だけ読み出され、バッファポインタによって指定された記憶領域に保存される。API関数PdReadFile()は、データの読み出しに成功した場合、戻り値として、その読み出したデータのバイト数を返し、データの読み出しに失敗した場合、戻り値として0を返す。なお、API関数PdReadFile()は、Win32サブシステム51が提供するAPI関数ReadFile()に相当する。
The API function PdReadFile () is an API function that requests reading of data from a file, a file handle of a file from which data is to be read, a buffer pointer that is a pointer to a buffer that temporarily stores data read from the file, And the number of bytes as the amount of data to be read from the file is taken as an argument. Then, by calling the API function PdReadFile () with the argument file handle, buffer pointer, and number of bytes, the data of the file specified by the file handle is read by the number of bytes, and the buffer pointer Is stored in the storage area specified by. The API function PdReadFile () returns the number of bytes of the read data as a return value when the data reading is successful, and returns 0 as the return value when the data reading fails. The API function PdReadFile () corresponds to the API function ReadFile () provided by the
API関数PdWriteFile()は、ファイルへのデータの書き込みを要求するAPI関数で、データを書き込もうとするファイルのファイルハンドル、ファイルに書き込むデータを一時記憶するバッファへのポインタであるバッファポインタ、およびファイルに書き込むデータのデータ量としてのバイト数を、引数としてとる。そして、API関数PdWriteFile()を、引数のファイルハンドル、バッファポインタ、およびバイト数を指定して呼び出すことにより、バッファポインタによって指定された記憶領域における、そのバイト数のデータが、ファイルハンドルによって特定されるファイルに書き込まれる。API関数PdWriteFile()は、データの書き込みに成功した場合、戻り値として、その書き込んだデータのバイト数を返し、データの書き込みに失敗した場合、戻り値として0を返す。なお、API関数PdWriteFile()は、Win32サブシステム51が提供するAPI関数WriteFile()に相当する。
The API function PdWriteFile () is an API function that requests writing of data to a file. The file handle of the file to which data is to be written, the buffer pointer that is a pointer to the buffer that temporarily stores the data to be written to the file, and the file The number of bytes as the amount of data to be written is taken as an argument. Then, by calling the API function PdWriteFile () specifying the argument file handle, buffer pointer, and number of bytes, the data of that number of bytes in the storage area specified by the buffer pointer is specified by the file handle. Written to a file. The API function PdWriteFile () returns the number of bytes of the written data as a return value when data writing is successful, and returns 0 as the return value when data writing fails. The API function PdWriteFile () corresponds to the API function WriteFile () provided by the
PD_API41は、API関数PdOpenFile(), PdCloseFile(), PdReadFile(), PdWriteFile()が呼び出されると、それぞれ、Win32サブシステム51が提供する、対応するAPI関数DeviceIoControl()を呼び出す。
When the API functions PdOpenFile (), PdCloseFile (), PdReadFile (), and PdWriteFile () are called, the
API関数DeviceIoControl()が呼び出されると、Win32サブシステム51は、NT入出力マネージャ52に対して、そのAPI関数DeviceIoControl()に応じた要求を行い、NT入出力マネージャ52は、その要求を、IRP_MJ_DEVICE_CONTROLのIRPに変換し、PDフィルタ53に供給する。
When the API function DeviceIoControl () is called, the
このIRP_MJ_DEVICE_CONTROLでは、上述したように、ユーザ定義が可能なサブコードとしてのIOCTLが指定される。 In this IRP_MJ_DEVICE_CONTROL, as described above, IOCTL is specified as a subcode that can be defined by the user.
図21は、API関数PdOpenFile(), PdCloseFile(), PdReadFile(), PdWriteFile()が、それぞれ呼び出されたときに、IRP_MJ_DEVICE_CONTROLで指定されるユーザ定義のIOCTLを示している。 FIG. 21 shows user-defined IOCTLs specified by IRP_MJ_DEVICE_CONTROL when the API functions PdOpenFile (), PdCloseFile (), PdReadFile (), and PdWriteFile () are respectively called.
図21では、図20のAPI関数PdOpenFile(), PdCloseFile(), PdReadFile(), PdWriteFile()に、それぞれ対応するIOCTL_PD_OPEN_FILE, IOCTL_PD_CLOSE_FILE, ICCTL_PD_READ_FILE, IOCTL_PD_WRITE_FILEの4つのIOCTLが、ユーザ定義のIOCTLとして用意されている。 In FIG. 21, four IOCTLs IOCTL_PD_OPEN_FILE, IOCTL_PD_CLOSE_FILE, ICCTL_PD_READ_FILE, and IOCTL_PD_WRITE_FILE corresponding to the API functions PdOpenFile (), PdCloseFile (), PdReadFile (), and PdWriteFile () in FIG. 20 are prepared as user-defined IOCTLs. Yes.
IOCTL_PD_OPEN_FILEは、API関数PdOpenFile()の呼び出しに応じて呼び出されるAPI関数DeviceIoControl()(に応じた要求)に対応するIRP_MJ_DEVICE_CONTROLのIRPのサブコードとなるIOCTLで、ファイルのオープンを要求するIOCTLである。 IOCTL_PD_OPEN_FILE is an IOCTL that is an IRP subcode of IRP_MJ_DEVICE_CONTROL corresponding to the API function DeviceIoControl () (requested in response to the API function PdOpenFile ()) and is requested to open the file.
IOCTL_PD_CLOSE_FILEは、API関数PdCloseFile()の呼び出しに応じて呼び出されるAPI関数DeviceIoControl()に対応するIRP_MJ_DEVICE_CONTROLのIRPのサブコードとなるIOCTLで、ファイルのクローズを要求するIOCTLである。 IOCTL_PD_CLOSE_FILE is an IOCTL that is an IRP subcode of IRP_MJ_DEVICE_CONTROL corresponding to the API function DeviceIoControl () that is called in response to the call of the API function PdCloseFile (), and is an IOCTL that requests the file to be closed.
IOCTL_PD_READ_FILEは、API関数PdReadFile()の呼び出しに応じて呼び出されるAPI関数DeviceIoControl()に対応するIRP_MJ_DEVICE_CONTROLのIRPのサブコードとなるIOCTLで、ファイルからのデータの読み出しを要求するIOCTLである。 IOCTL_PD_READ_FILE is an IOCTL that is an IRP subcode of IRP_MJ_DEVICE_CONTROL corresponding to the API function DeviceIoControl () called in response to the call of the API function PdReadFile (), and is an IOCTL that requests reading of data from the file.
IOCTL_PD_WRITE_FILEは、API関数PdWriteFile()の呼び出しに応じて呼び出されるAPI関数DeviceIoControl()に対応するIRP_MJ_DEVICE_CONTROLのIRPのサブコードとなるIOCTLで、ファイルへのデータの書き込みを要求するIOCTLである。 IOCTL_PD_WRITE_FILE is an IOCTL that is a subcode of IRP of IRP_MJ_DEVICE_CONTROL corresponding to the API function DeviceIoControl () that is called in response to the call of the API function PdWriteFile (), and is an IOCTL that requests data writing to the file.
なお、上述したように、IRP_MJ_DEVICE_CONTROLのIRPのサブコードとなるユーザ定義のIOCTLは、Win32サブシステム51が提供するAPI関数DeviceIoControl()を利用して、Win32サブシステム51からNT入出力マネージャ52に渡され、NT入出力マネージャ52において、IRP_MJ_DEVICE_CONTROLのIRPのサブコードとして指定される。
As described above, the user-defined IOCTL that is the IRP subcode of IRP_MJ_DEVICE_CONTROL is passed from the
次に、図22のフローチャートを参照して、PDフィルタ53がキャッシュオン/オフ機能を実装している場合の、図19におけるAVアプリケーション33、PD_API41、PDフィルタ53、およびPD_FS54の処理の概要について説明する。
Next, an overview of the processing of the
AVアプリケーション33は、光ディスク3に対するAVデータの読み書きを、キャッシュ機能を利用せずに行う場合、ステップS201において、AVデータの読み書きを行おうとするファイルのオープンを要求するAPI関数PdOpenFile()を、キャッシュ機能を利用しない旨のキャッシュ情報(Cache OFF)を引数として呼び出す。
When the
PD_API41は、ステップS211において、AVアプリケーション33によるAPI関数PdOpenFile()の呼び出しを受信して、ステップS212に進み、そのAPI関数PdOpenFile()の呼び出しに応じて、ファイルのオープンを要求するAPI関数DeviceIoControl()を呼び出す。このAPI関数DeviceIoControl()の呼び出しによって、ファイルのオープンを要求するIOCTL_PD_OPEN_FILEがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。なお、この場合、IOCTL_PD_OPEN_FILEには、キャッシュ機能を利用しない旨のキャッシュ情報が含まれる。
In step S211, the
PDフィルタ53は、ステップS221において、NT入出力マネージャ52からのIRPを受信し、そのIRPのIOCTL_PD_OPEN_FILEにしたがい、キャッシュ機能の利用の有無を表すキャッシュフラグを、キャッシュ機能を利用しない旨を表す、例えば、0にリセットし(設定し)、これにより、AVアプリケーション33でキャッシュオフを指定してオープンされたファイルについてはキャッシュ機能を利用しないキャッシュオフ状態となる。
In step S221, the
PDフィルタ53は、キャッシュオフ状態となっている間、PD_API41からのIRP_MJ_DEVICE_CONTROLのIRP(PD_API41がAPI関数PdOpenFile(), PdCloseFile(), PdReadFile()、またはPdWriteFile()の呼び出しに応じて呼び出すAPI関数DeviceIoControl()に対応して、IOCTL_PD_OPEN_FILE, IOCTL_PD_CLOSE_FILE, ICCTL_PD_READ_FILE、またはIOCTL_PD_WRITE_FILEがそれぞれ指定されるIRP_MJ_DEVICE_CONTROLのIRP)を、そのIRP_MJ_DEVICE_CONTROLのIRPのまま、PD_FS54に出力することにより、PD_API41からのIRPによって要求されるデータの読み書きが、キャッシュ機能を利用しないで行われるように、PD_API41からのIRPの出力制御を行う。
While in the cache-off state, the
即ち、ステップS221では、PDフィルタ53は、キャッシュオフ状態となった後、NT入出力マネージャ52から受信した、PD_API41からの、IOCTL_PD_OPEN_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPを、そのまま、PD_FS54に出力する。
That is, in step S221, the
PD_FS54は、ステップS231において、PDフィルタ53からの、IOCTL_PD_OPEN_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPを受信し、PDストレージ55に出力する。これにより、光ディスク3上のファイルがオープンされる。
In step S <b> 231, the
その後、例えば、AVアプリケーション33が、ステップS202において、光ディスク3に対するアクセス要求としての、例えば、ファイル(ファイルストリーム(File Stream))の読み出し、または書き込みを要求するAPI関数PdReadFile()、またはPdWriteFile()を呼び出すと、PD_API41は、ステップS213において、そのAPI関数PdReadFile()、またはPdWriteFile()の呼び出しを受信し、ステップS214に進む。
Thereafter, for example, the
ステップS214では、PD_API41は、AVアプリケーション33からのAPI関数PdReadFile()、またはPdWriteFile()の呼び出しに応じて、ファイルの読み出し、または書き込みを要求するAPI関数DeviceIoControl()を呼び出し、この呼び出しによって、ファイルの読み出しを要求するIOCTL_PD_READ_FILEがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRP、またはファイルの書き込みを要求するIOCTL_PD_WRITE_FILEがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。
In step S214, the
PDフィルタ53は、ステップS223において、NT入出力マネージャ52からのIRP_MJ_DEVICE_CONTROLのIRPを受信して、ステップS224に進み、PD_FS54に出力する。
In step S223, the
ここで、キャッシュオフ状態のPDフィルタ53は、上述したように、PD_API41からのIRP_MJ_DEVICE_CONTROLのIRPを、そのIRP_MJ_DEVICE_CONTROLのIRPのまま、PD_FS54に出力する。
Here, as described above, the
従って、いまの場合、PDフィルタ53では、ステップS224において、ファイルの読み出しを要求するIOCTL_PD_READ_FILEがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRP、またはファイルの書き込みを要求するIOCTL_PD_WRITE_FILEがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPが、そのIRP_MJ_DEVICE_CONTROLのIRPのまま、PD_FS54に出力される。
Therefore, in this case, in step S224, in the
PD_FS54は、ステップS232において、PDフィルタ53からのIRP_MJ_DEVICE_CONTROLのIRPを受信する。
In step S232, the
ここで、PD_FS54は、Win32サブシステム51が提供するAPI関数ReadFile()またはWriteFile()が呼び出されたときに、NT入出力マネージャ52がPDフィルタ53に出力するIRP_MJ_READまたはIRP_MJ_WRITEのIRPについて、NTキャッシュマネージャ59によるキャッシュ機能を提供し、IRP_MJ_DEVICE_CONTROLのIRPについては、キャッシュ機能を提供しないようになっている。
Here, the
従って、ステップS232において、PDフィルタ53からのIRP_MJ_DEVICE_CONTROLのIRPを受信したPD_FS54は、そのIRPを、即座に、PDストレージ55に出力する。即ち、この場合、キャッシュ機能は利用されない。
Therefore, in step S232, the
その後、AVアプリケーション33が、ステップS203において、ステップS201でオープンを要求したファイルのクローズを要求するAPI関数PdCloseFile()を呼び出すと、PD_API41は、ステップS215において、AVアプリケーション33によるAPI関数PdCloseFile()の呼び出しを受信して、ステップS216に進み、そのAPI関数PdCloseFile()の呼び出しに応じて、ファイルのクローズを要求するAPI関数DeviceIoControl()を呼び出す。このAPI関数DeviceIoControl()の呼び出しによって、ファイルのクローズを要求するIOCTL_PD_CLOSE_FILEがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。
Thereafter, when the
PDフィルタ53は、ステップS225において、NT入出力マネージャ52からのIRPを受信して、ステップS226に進み、そのまま、PD_FS54に出力する。
In step S225, the
PD_FS54は、ステップS233において、PDフィルタ53からの、IOCTL_PD_CLOSE_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPを受信し、PDストレージ55に出力する。これにより、光ディスク3上のファイルがクローズされる。
In step S <b> 233, the
一方、AVアプリケーション33が、光ディスク3に対するAVデータの読み書きを、キャッシュ機能を利用して行う場合、ステップS241において、AVデータの読み書きを行おうとするファイルのオープンを要求するAPI関数PdOpenFile()を、キャッシュ機能を利用する旨のキャッシュ情報(Cache ON)を引数として呼び出す。
On the other hand, when the
PD_API41は、ステップS251において、AVアプリケーション33によるAPI関数PdOpenFile()の呼び出しを受信して、ステップS252に進み、そのAPI関数PdOpenFile()の呼び出しに応じて、ファイルのオープンを要求するAPI関数DeviceIoControl()を呼び出す。このAPI関数DeviceIoControl()の呼び出しによって、ファイルのオープンを要求するIOCTL_PD_OPEN_FILEがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。なお、この場合、IOCTL_PD_OPEN_FILEには、キャッシュ機能を利用する旨のキャッシュ情報が含まれる。
In step S251, the
PDフィルタ53は、ステップS261において、NT入出力マネージャ52からのIRPを受信し、そのIRPのIOCTL_PD_OPEN_FILEにしたがい、キャッシュ機能の利用の有無を表すキャッシュフラグを、キャッシュ機能を利用する旨を表す、例えば、1にセットし(設定し)、これにより、AVアプリケーション33でキャッシュオンを指定してオープンされたファイルについて、キャッシュ機能を利用するキャッシュオン状態となる。
In step S261, the
PDフィルタ53は、キャッシュオン状態となっている間、PD_API41からのIRPによって要求されるデータの読み書きが、キャッシュ機能を利用して行われるように制御する。
The
即ち、ステップS261では、PDフィルタ53は、キャッシュオン状態となった後、NT入出力マネージャ52から受信した、PD_API41からの、IOCTL_PD_OPEN_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPを、PD_FS54に出力する。
That is, in step S261, the
PD_FS54は、ステップS271において、PDフィルタ53からの、IOCTL_PD_OPEN_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPを受信し、PDストレージ55に出力する。これにより、光ディスク3上のファイルがオープンされる。
In step S <b> 271, the
その後、例えば、AVアプリケーション33が、ステップS242において、光ディスク3に対するアクセス要求としての、例えば、ファイルの読み出し、または書き込みを要求するAPI関数PdReadFile()、またはPdWriteFile()を呼び出すと、PD_API41は、ステップS253において、そのAPI関数PdReadFile()、またはPdWriteFile()の呼び出しを受信し、ステップS254に進む。
Thereafter, for example, when the
ステップS254では、PD_API41は、AVアプリケーション33からのAPI関数PdReadFile()、またはPdWriteFile()の呼び出しに応じて、ファイルの読み出し、または書き込みを要求するAPI関数DeviceIoControl()を呼び出し、この呼び出しによって、ファイルの読み出しを要求するIOCTL_PD_READ_FILEがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRP、またはファイルの書き込みを要求するIOCTL_PD_WRITE_FILEがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。
In step S254, the
PDフィルタ53は、ステップS263において、NT入出力マネージャ52からのIRP_MJ_DEVICE_CONTROLのIRPを受信して、ステップS264に進み、PD_FS54に出力する。
In step S263, the
ここで、キャッシュオン状態のPDフィルタ53は、PD_API41からのIRP_MJ_DEVICE_CONTROLのIRPのうちの、ファイルの読み出しを要求するIOCTL_PD_READ_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPと、ファイルの書き込みを要求するIOCTL_PD_WRITE_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPとについては、そのIRPを変換して、PD_FS54に出力する。
Here, the IRP_MJ_DEVICE_CONTROL IRP requesting the file read and the IRP_MJ_DEVICE_CONTROL IRP requesting the file read and the IOCTL_PD_WRITE_FILE requesting the file write out of the IRP_MJ_DEVICE_CONTROL IRP from the
即ち、ステップS264では、ファイルの読み出しを要求するIOCTL_PD_READ_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPは、Win32サブシステム51が提供する、ファイルの読み出しを要求するAPI関数ReadFile()が呼び出されたときにNT入出力マネージャ52がPDフィルタ53に出力するIRP_MJ_READに変換され、PD_FS54に出力される。
That is, in step S264, the IRP_MJ_DEVICE_CONTROL IRP in which IOCTL_PD_READ_FILE requesting file reading is specified is input to NT when the API function ReadFile () provided by the
また、ファイルの書き込みを要求するIOCTL_PD_WRITE_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPは、Win32サブシステム51が提供する、ファイルの書き込みを要求するWriteFile()が呼び出されたときにNT入出力マネージャ52がPDフィルタ53に出力するIRP_MJ_WRITEのIRPに変換され、PD_FS54に出力される。
Also, the IRP_MJ_DEVICE_CONTROL IRP in which IOCTL_PD_WRITE_FILE requesting file writing is specified indicates that the NT I /
PD_FS54は、ステップS272において、PDフィルタ53からのIRP_MJ_READのIRP、またはIRP_MJ_WRITEのIRPを受信する。
In step S272, the
ここで、上述したように、PD_FS54は、IRP_MJ_READのIRPまたはIRP_MJ_WRITEのIRPについては、NTキャッシュマネージャ59によるキャッシュ機能を提供する。
Here, as described above, the
従って、ステップS272において、PDフィルタ53からのIRP_MJ_READのIRP、またはIRP_MJ_WRITEのIRPを受信したPD_FS54では、そのIRPによって要求されるデータの読み書きがキャッシュ機能を利用して行われる。
Therefore, in step S272, the
即ち、例えば、PDフィルタ53からのIRP_MJ_READのIRPによって読み出しが要求されているデータが、NTキャッシュマネージャ59にキャッシュされている場合には、PD_FS54は、そのキャッシュされているデータを、応答として、PDフィルタ53に返す。また、例えば、PDフィルタ53からのIRP_MJ_READのIRPによって読み出しが要求されているデータが、NTキャッシュマネージャ59にキャッシュされていない場合には、PD_FS54は、PDフィルタ53からのIRP_MJ_READのIRPを、PDストレージ55に出力する。
That is, for example, when the data requested to be read by the IRP_MJ_READ IRP from the
その後、AVアプリケーション33が、ステップS243において、ステップS241でオープンを要求したファイルのクローズを要求するAPI関数PdCloseFile()を呼び出すと、PD_API41は、ステップS255において、AVアプリケーション33によるAPI関数PdCloseFile()の呼び出しを受信して、ステップS256に進み、そのAPI関数PdCloseFile()の呼び出しに応じて、ファイルのクローズを要求するAPI関数DeviceIoControl()を呼び出す。このAPI関数DeviceIoControl()の呼び出しによって、ファイルのクローズを要求するIOCTL_PD_CLOSE_FILEがIOCTLとして指定されているIRP_MJ_DEVICE_CONTROLのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。
Thereafter, when the
PDフィルタ53は、ステップS265において、NT入出力マネージャ52からのIRPを受信して、ステップS266に進み、そのまま、PD_FS54に出力する。
In step S265, the
PD_FS54は、ステップS273において、PDフィルタ53からの、IOCTL_PD_CLOSE_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPを受信し、PDストレージ55に出力する。これにより、光ディスク3上のファイルがクローズされる。
In step S <b> 273, the
なお、ファイルのオープンを要求するAPI関数PdOpenFile()を呼び出すときに、その引数のキャッシュ情報を、キャッシュ機能を利用する旨の情報とするか、またはキャッシュ情報を利用しない旨の情報とするかは、例えば、PC1やドライブ2の性能(例えば、CPU12の動作クロックや、ドライブ2の最悪シーク時間など)、ユーザの操作などに応じて決定することが可能である。
When calling the API function PdOpenFile () that requests opening of a file, whether the cache information of the argument is information that the cache function is used or information that the cache information is not used For example, it can be determined according to the performance of the
次に、図23のフローチャートを参照して、図19のPDフィルタ53によるキャッシュオン/オフの機能の処理について説明する。
Next, with reference to the flowchart of FIG. 23, processing of the cache on / off function by the
アプリケーション31乃至33のうちのいずれか(のプロセス)において、ドライブ2に対するI/O関係の処理を要求する(I/O要求を行う)API関数が呼び出されると、そのAPI関数の呼び出しに応じて、NT入出力マネージャ52は、そのAPI関数に対応するIRPを、PDフィルタ53に供給する。
When any of the
なお、本実施の形態においては、アプリケーション31乃至33(AVアプリケーション33のPD_API41も含む)により呼び出されるAPI関数としては、Win32サブシステム32が提供するものの他、PD_API41が提供するものがある。
In the present embodiment, API functions called by
Win32サブシステム32が提供するAPI関数の呼び出しに対しては、Win32サブシステム32が、そのAPI関数に応じた要求を、NT入出力マネージャ52に対して行い、NT入出力マネージャ52が、そのAPI関数に対応するIRPを、PDフィルタ53に供給する。また、PD_API41が提供するAPI関数の呼び出しに対しては、PD_API41が、そのAPI関数に応じたAPI関数DeviceIoControl()を呼び出し、さらに、Win32サブシステム32が、そのAPI関数DeviceIoControl()に応じた要求を、NT入出力マネージャ52に対して行い、NT入出力マネージャ52が、そのAPI関数DeviceIoControl()に対応するIRPを、PDフィルタ53に供給する。
For calling an API function provided by the
従って、アプリケーション31乃至33により呼び出されたAPI関数が、Win32サブシステム32が提供するAPI関数であっても、また、PD_API41が提供するAPI関数であっても、最終的には、そのAPI関数に対応するIRPが、NT入出力マネージャ52からPDフィルタ53に供給されることに変わりはない。
Therefore, even if the API function called by the
PDフィルタ53は、ステップS301において、API関数の呼び出しに応じて、NT入出力マネージャ52から供給されたIRPを受信し、コマンドバッファ111に記憶させて、ステップS302に進む。ステップS302では、フィルタコア53Aが、(直前のステップS301で)コマンドバッファ111に記憶されたIRPが、IOCTLとして、ファイルのオープンを要求するIOCTL_PD_OPEN_FILE(図21)が指定されているIRP(IRP_MJ_DEVICE_CONTROLのIRP)であるかどうかを判定する。
In step S301, the
ここで、IOCTL_PD_OPEN_FILEには、上述したように、キャッシュ情報が含まれる。 Here, the IOCTL_PD_OPEN_FILE includes cache information as described above.
ステップS302において、コマンドバッファ111に記憶されたIRPが、IOCTL_PD_OPEN_FILEが指定されているIRPであると判定された場合、ステップS303に進み、フィルタコア53Aは、そのIRPで指定されているIOCTL_PD_OPEN_FILEにおけるキャッシュ情報がキャッシュ機能を利用する旨を表しているかどうかを判定する。
If it is determined in step S302 that the IRP stored in the
ステップS303において、キャッシュ情報がキャッシュ機能を利用する旨を表していると判定された場合、ステップS304に進み、フィルタコア53Aは、変数としてのキャッシュフラグを、キャッシュ機能を利用することを表す1にセットし(設定し)、これにより、キャッシュオン状態となって、ステップS306に進む。
If it is determined in step S303 that the cache information indicates that the cache function is used, the process proceeds to step S304, and the
また、ステップS303において、キャッシュ情報がキャッシュ機能を利用しない旨を表していると判定された場合、ステップS305に進み、フィルタコア53Aは、変数としてのキャッシュフラグを、キャッシュ機能を利用しないことを表す0にリセットし(設定し)、これにより、キャッシュオフ状態となって、ステップS306に進む。
If it is determined in step S303 that the cache information indicates that the cache function is not used, the process advances to step S305, and the
ステップS306では、フィルタコア53Aは、コマンドバッファ111に記憶された、IOCTL_PD_OPEN_FILEが指定されているIRPを、PD_FS54に出力し、次のIRPが供給されるのを待って、ステップS301に戻る。
In step S306, the
なお、この場合、PD_FS54は、フィルタコア53AからのIOCTL_PD_OPEN_FILEが指定されているIRPを受信して、PDストレージ55に出力し、これにより、ファイルがオープンされる。
In this case, the
一方、ステップS302において、コマンドバッファ111に記憶されたIRPが、IOCTL_PD_OPEN_FILEが指定されているIRPでないと判定された場合、ステップS307に進み、フィルタコア53Aは、コマンドバッファ111に記憶されたIRPが、IOCTLとして、ファイルのクローズを要求するIOCTL_PD_CLOSE_FILE(図21)が指定されているIRP(IRP_MJ_DEVICE_CONTROLのIRP)であるかどうかを判定する。
On the other hand, if it is determined in step S302 that the IRP stored in the
ステップS307において、コマンドバッファ111に記憶されたIRPが、IOCTL_PD_CLOSE_FILEが指定されているIRPであると判定された場合、ステップS308に進み、フィルタコア53Aは、コマンドバッファ111に記憶された、IOCTL_PD_CLOSE_FILEが指定されているIRPを、PD_FS54に出力し、次のIRPが供給されるのを待って、ステップS301に戻る。
If it is determined in step S307 that the IRP stored in the
なお、この場合、PD_FS54は、フィルタコア53AからのIOCTL_PD_CLOSE_FILEが指定されているIRPを受信して、PDストレージ55に出力し、これにより、ファイルがクローズされる。
In this case, the
また、ステップS307において、コマンドバッファ111に記憶されたIRPが、IOCTL_PD_CLOSE_FILEが指定されているIRPでないと判定された場合、ステップS309に進み、フィルタコア53Aは、コマンドバッファ111に記憶されたIRPが、IOCTLとして、ファイルの読み出しを要求するIOCTL_PD_READ_FILE、またはファイルの書き込みを要求するIOCTL_PD_WRITE_FILE(図21)が指定されているIRP(IRP_MJ_DEVICE_CONTROLのIRP)であるかどうかを判定する。
If it is determined in step S307 that the IRP stored in the
ステップS309において、コマンドバッファ111に記憶されたIRPが、IOCTL_PD_READ_FILE、またはIOCTL_PD_WRITE_FILEが指定されているIRPでないと判定された場合、ステップS310に進み、コマンドバッファ111に記憶されたIRPを、PD_FS54に出力し、次のIRPが供給されるのを待って、ステップS301に戻る。
If it is determined in step S309 that the IRP stored in the
また、ステップS309において、コマンドバッファ111に記憶されたIRPが、IOCTL_PD_READ_FILE、またはIOCTL_PD_WRITE_FILEが指定されているIRPであると判定された場合、ステップ311に進み、フィルタコア53Aは、キャッシュフラグが1であるかどうかを判定する。
If it is determined in step S309 that the IRP stored in the
ステップS311において、キャッシュフラグが1であると判定された場合、即ち、PDフィルタ53(のフィルタコア53A)がキャッシュオン状態になっている(設定されている)場合、ステップS312に進み、フィルタコア53Aは、コマンドバッファ111に記憶されたIRPを変換する。
If it is determined in step S311 that the cache flag is 1, that is, if the PD filter 53 (the
即ち、いまの場合、コマンドバッファ111に記憶されているIRPは、IOCTLとして、ファイルの読み出しを要求するIOCTL_PD_READ_FILE、またはファイルの書き込みを要求するIOCTL_PD_WRITE_FILE(図21)が指定されているIRP_MJ_DEVICE_CONTROLのIRPである。
In other words, in this case, the IRP stored in the
フィルタコア53Aは、コマンドバッファ111に記憶されているIRPが、ファイルの読み出しを要求するIOCTL_PD_READ_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPである場合、ステップS312において、そのIRP_MJ_DEVICE_CONTROLのIRPを、Win32サブシステム51が提供するAPI関数ReadFile()が呼び出されたときにNT入出力マネージャ52がPDフィルタ53に出力するIRP_MJ_READのIRPに変換する。
When the IRP stored in the
また、フィルタコア53Aは、コマンドバッファ111に記憶されているIRPが、ファイルの書き込みを要求するIOCTL_PD_WRITE_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPである場合、ステップS312において、そのIRP_MJ_DEVICE_CONTROLのIRPを、Win32サブシステム51が提供するAPI関数WriteFile()が呼び出されたときにNT入出力マネージャ52がPDフィルタ53に出力するIRP_MJ_WRITEのIRPに変換する。
If the IRP stored in the
そして、ステップS313に進み、フィルタコア53Aは、ステップS312での変換後のIRP、即ち、IRP_MJ_READまたはIRP_MJ_WRITEのIRPを、PD_FS54に出力し、次のIRPが供給されるのを待って、ステップS301に戻る。
In step S313, the
なお、この場合、PD_FS54は、フィルタコア53AからのIRP_MJ_READのIRP、またはIRP_MJ_WRITEのIRPを受信し、そのIRPによって要求されるデータの読み出し、または書き込みを、キャッシュ機能を利用して行う。
In this case, the
即ち、上述したように、PD_FS54は、IRP_MJ_READのIRPまたはIRP_MJ_WRITEのIRPについては、NTキャッシュマネージャ59によるキャッシュ機能を提供する。
That is, as described above, the
従って、例えば、PD_FS54が、フィルタコア53Aから受信したIRPが、IRP_MJ_READのIRPである場合、そのIRPによって読み出しが要求されているデータが、NTキャッシュマネージャ59にキャッシュされているかどうかが確認される。そして、読み出しが要求されているデータがキャッシュされている場合には、PD_FS54は、そのキャッシュされているデータを、応答として、PDフィルタ53に返す。また、例えば、PDフィルタ53からのIRP_MJ_READのIRPによって読み出しが要求されているデータが、NTキャッシュマネージャ59にキャッシュされていない場合には、PD_FS54は、PDフィルタ53からのIRP_MJ_READのIRPを、PDストレージ55に出力する。
Therefore, for example, when the IRP received by the
ここで、PDストレージ55には、データの読み書きのための図示せぬリードライトバッファ(Read/Write Buffer)が用意されている。リードライトバッファのサイズは、例えば、ページング時のページサイズ(Page Size)(例えば、4KB(kilo byte))に等しくなっており、一度に読み書きすることができるデータの最大サイズは、このリードライトバッファのサイズに制限される。
Here, the
このため、PD_FS54は、フィルタコア53AからのIRP_MJ_READのIRPによって読み出しが要求されるデータのサイズが、リードライトバッファのサイズを越えている場合には、フィルタコア53AからのIRP_MJ_READのIRPを、リードライトバッファのサイズ以内のデータの読み出しを要求する複数のIRP_MJ_READのIRPに分割し、PDストレージ55に出力する。フィルタコア53AからのIRP_MJ_WRITEのIRPについても、同様である。
Therefore, the
一方、ステップS311において、キャッシュフラグが1でないと判定された場合、即ち、キャッシュフラグが0であり、従って、PDフィルタ53(のフィルタコア53A)がキャッシュオフ状態になっている(設定されている)場合、ステップS314に進み、フィルタコア53Aは、コマンドバッファ111に記憶されたIRP、即ち、ファイルの読み出しを要求するIOCTL_PD_READ_FILE、またはファイルの書き込みを要求するIOCTL_PD_WRITE_FILE(図21)が指定されているIRP_MJ_DEVICE_CONTROLのIRPを、そのまま、PD_FS54に出力し、次のIRPが供給されるのを待って、ステップS301に戻る。
On the other hand, if it is determined in step S311 that the cache flag is not 1, that is, the cache flag is 0, the PD filter 53 (filter core 53A thereof) is in the cache-off state (set). ), The process advances to step S314, and the
なお、この場合、PD_FS54は、フィルタコア53AからのIOCTL_PD_READ_FILE、、またはIOCTL_PD_WRITE_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPを受信し、キャッシュ機能を利用せずに、即座に、そのIRPを、PDストレージ55に出力する。
In this case, the
即ち、上述したように、PD_FS54は、IRP_MJ_DEVICE_CONTROLのIRPについては、キャッシュ機能を提供せず、即座に、PDストレージ55に出力する。
That is, as described above, the
ここで、一度に読み書きすることができるデータの最大サイズは、上述したように、PDストレージ55のリードライトバッファのサイズに制限される。
Here, the maximum size of data that can be read and written at a time is limited to the size of the read / write buffer of the
このため、フィルタコア53Aは、ステップS314においてPD_FS54に出力するIRP_MJ_DEVICE_CONTROLのIRPによって読み書きが要求されるデータのサイズが、リードライトバッファのサイズを越えている場合には、そのIRP_MJ_DEVICE_CONTROLのIRPを、リードライトバッファのサイズ以内のデータの読み書きを要求する複数のIRP_MJ_DEVICE_CONTROLのIRPに分割し、PD_FS54に出力する。
Therefore, if the size of the data requested to be read / written by the IRP_MJ_DEVICE_CONTROL IRP output to the
なお、キャッシュオン/オフ機能によって、キャッシュ機能が利用されたり、されなかったりするのは、図21に示したユーザ定義のIOCTLが指定されるIRP_MJ_DEVICE_CONTROLのIRPだけであり、このIOCTLが指定されるIRPは、PD_API41のみが提供する図20のAPI関数の呼び出しによって、NT入出力マネージャ52からPDフィルタ53に出力される。
Note that the cache function is used or not depending on the cache on / off function only in the IRP_MJ_DEVICE_CONTROL IRP in which the user-defined IOCTL shown in FIG. 21 is specified, and the IRP in which this IOCTL is specified. Is output from the NT input /
従って、キャッシュオン/オフ機能を利用することができるのは、本実施の形態では、PD_API41をロードするAVアプリケーション33だけである。
Accordingly, in this embodiment, only the
そして、AVアプリケーション33において、キャッシュ機能を利用しない場合には、AVアプリケーション33からのIRPに対するキャッシュ処理の分のオーバヘッドが生じることによる、そのIRPの処理の遅延を防止し、AVアプリケーション33によるAVデータの再生や記録のリアルタイム性を向上させることができる。
When the
一方、他のアプリケーション31や32は、Win32サブシステム51が提供するAPI関数ReadFile()またはWriteFile()を直接呼び出すことにより、データの読み出しまたは書き込みを要求するので、データの読み出しまたは書き込みにあたっては、必ず、キャッシュ機能を利用することになる。
On the other hand, the
このキャッシュ機能の利用により、PD_FS54からPDストレージ55に対して、アプリケーション31や32からのIRPが出力される頻度が低下する。これにより、アプリケーション31や32からのIRPによって要求されるデータの読み書きによって生じるドライブ2のシーク、さらには、そのデータの読み書き後の、AVアプリケーション33からのIRPによって要求されるデータの読み書き時に生じるドライブ2のシークの発生を防止(低減)し、やはり、AVアプリケーション33によるAVデータの再生や記録のリアルタイム性を向上させることができる。
By using this cache function, the frequency with which IRPs from the
次に、上述の第1乃至第3の機能のうちのいずれかと、キャッシュオン/オフ機能とは、組み合わせて使用することができる。 Next, any one of the first to third functions described above and the cache on / off function can be used in combination.
図24は、第1または第2の機能のうちのいずれか一方と、キャッシュオン/オフ機能とを組み合わせて使用する場合のPDフィルタ53の構成例を示している。
FIG. 24 shows a configuration example of the
図24においては、PDフィルタ53は、第1の機能の処理で説明したように、アプリケーション31乃至33からの、光ディスク3に対するアクセス要求に対応するIRPに対して、IRPプライオリティを設定し、そのIRPプライオリティが設定されたIRPをキュー81に記憶させる。そして、PDフィルタ53は、キュー81に記憶されたIRPを、そのIRPに設定されたプライオリティにしたがって読み出し、PD_FS54に出力する。
In FIG. 24, the
あるいは、PDフィルタ53は、第2の機能の処理で説明したように、アプリケーション31乃至33からの、光ディスク3に対するアクセス要求に対応するIRPの処理の許可または不許可を表すポーズフラグを設定する一方、アプリケーション31乃至33からのIRPをキュー81に記憶させる。そして、PDフィルタ53は、キュー81に記憶されたIRPを、ポーズフラグにしたがって読み出し、PD_FS54に出力する。
Alternatively, as described in the processing of the second function, the
さらに、PDフィルタ53は、キャッシュオン/オフ機能の処理で説明したように、AVアプリケーション33からのIRPについて、キャッシュ機能の利用の有無を設定し、IRPをPD_FS54に出力する際、その設定結果にしたがって、そのIRPを処理する。
Further, as described in the processing of the cache on / off function, the
図25は、第3の機能とキャッシュオン/オフ機能とを組み合わせて使用する場合のPDフィルタ53の構成例を示している。
FIG. 25 shows a configuration example of the
図25においては、PDフィルタ53は、第3の機能の処理で説明したように、AVアプリケーション33以外のアプリケーション、即ち、アプリケーション31および32(のプロセス)からのIRPの、PD_FS54への出力をオン/オフする機能的なスイッチ101を有し、その機能的なスイッチ101を、レジストリ58に記憶されたスイッチ設定情報にしたがってオンまたはオフにすることによって、アプリケーション31および32からのIRPの、PD_FS54への出力を制御する。
In FIG. 25, the
さらに、PDフィルタ53は、キャッシュオン/オフ機能の処理で説明したように、AVアプリケーション33からのIRPについて、キャッシュ機能の利用の有無を設定し、IRPをPD_FS54に出力する際、その設定結果にしたがって、そのIRPを処理する。
Further, as described in the processing of the cache on / off function, the
以上のように、第1乃至第3の機能のうちのいずれかと、キャッシュオン/オフ機能とを組み合わせて使用する場合にも、アプリケーション31および32が光ディスク3にアクセスすることに起因するシークを抑制(防止)すること等ができ、これにより、アプリケーション33によるAVデータのリアルタイムでの再生や記録を行うことが可能となる。
As described above, even when any one of the first to third functions and the cache on / off function are used in combination, the seek caused by the
なお、本実施の形態では、データの記録や再生が行われる記録媒体として、光ディスクを採用することとしたが、本発明は、その他、例えば、ハードディスクその他のディスク状の記録媒体などのシークが生じる記録媒体に対してデータの記録や再生を行う場合に適用可能である。 In the present embodiment, an optical disk is used as a recording medium on which data is recorded and reproduced. However, in the present invention, seeking such as a hard disk or other disk-shaped recording medium occurs. The present invention can be applied when recording and reproducing data on a recording medium.
また、本明細書において、PC1に各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。
Further, in this specification, the processing steps for describing a program for causing the
1 PC, 2 ドライブ, 3 光ディスク, 4 1394ケーブル, 11 バス, 12 CPU, 13 ROM, 14 RAM, 15 ハードディスク, 16 出力部, 17 入力部, 18 通信部, 19 ドライブ, 20 入出力インタフェース, 21 リムーバブル記録媒体, 22 IEEE1394I/F, 30 OS, 31乃至33 アプリケーション, 41 PD_API, 51 Win32サブシステム, 52 NT入出力マネージャ, 53 PDフィルタ, 53A フィルタコア, 54 PD_FS, 54A FSコア, 55 PDストレージ, 56 SBP2ドライバ, 57 1394バスドライバ, 58 レジストリ, 59 NTキャッシュマネージャ, 81A,81B キュー, 101 スイッチ, 111 コマンドバッファ 1 PC, 2 drive, 3 optical disk, 4 1394 cable, 11 bus, 12 CPU, 13 ROM, 14 RAM, 15 hard disk, 16 output unit, 17 input unit, 18 communication unit, 19 drive, 20 I / O interface, 21 removable Recording medium, 22 IEEE1394 I / F, 30 OS, 31 to 33 application, 41 PD_API, 51 Win32 subsystem, 52 NT I / O manager, 53 PD filter, 53A filter core, 54 PD_FS, 54A FS core, 55 PD storage, 56 SBP2 driver, 57 1394 bus driver, 58 registry, 59 NT cache manager, 81A, 81B queue, 101 switch, 111 command buffer
Claims (9)
アプリケーションからの前記アクセス要求に対して、特有のプライオリティを設定するプライオリティ設定手段と、
前記プライオリティが設定された前記アクセス要求を、キューに記憶させるキュー制御手段と、
前記キューに記憶された前記アクセス要求を、前記プライオリティにしたがって処理するアクセス要求処理手段と
を備え、
前記アクセス要求をフィルタリングし、ファイルシステムドライバに渡すフィルタドライバを前記情報処理装置に実行させることにより、前記情報処理装置を、前記プライオリティ設定手段、前記キュー制御手段、及び、前記アクセス要求処理手段として機能させる
情報処理装置。 In an information processing apparatus that processes an access request that is a request for access to a recording medium from an application,
Priority setting means for setting a specific priority for the access request from the application;
Queue control means for storing the access request with the priority set in a queue;
Access request processing means for processing the access request stored in the queue according to the priority,
The information processing apparatus functions as the priority setting means, the queue control means, and the access request processing means by causing the information processing apparatus to execute a filter driver that filters the access request and passes it to a file system driver Information processing device.
請求項1に記載の情報処理装置。 The information processing apparatus according to claim 1, wherein the priority setting unit sets a higher priority for the access request from a specific application than to an access request from another application.
前記アクセス要求処理手段は、さらに、前記キャッシュ機能設定手段によるキャッシュ機能の利用の有無の設定結果にしたがって、前記アクセス要求を処理する
請求項1に記載の情報処理装置。 It further comprises a cache function setting means for setting whether to use the cache function,
The information processing apparatus according to claim 1, wherein the access request processing unit further processes the access request according to a setting result of whether or not the cache function is used by the cache function setting unit.
請求項3に記載の情報処理装置。 The information processing apparatus according to claim 3, wherein the access request processing unit processes only the access request from a specific application according to a setting result of whether to use the cache function.
請求項1に記載の情報処理装置。 The information processing apparatus according to claim 1, wherein the data read from and written to the recording medium includes at least AV (Audio Visual) data.
請求項1に記載の情報処理装置。 The recording medium reserves a free area closest to the recording area in which data was recorded immediately before, among the continuous free areas of a predetermined size or more on the recording area, and records data. The information processing apparatus according to claim 1.
アプリケーションからの前記アクセス要求に対して、特有のプライオリティを設定するプライオリティ設定ステップと、
前記プライオリティが設定された前記アクセス要求を、キューに記憶させるキュー制御ステップと、
前記キューに記憶された前記アクセス要求を、前記プライオリティにしたがって処理するアクセス要求処理ステップと
を含み、
前記アクセス要求をフィルタリングし、ファイルシステムドライバに渡すフィルタドライバを情報処理装置に実行させることにより、前記情報処理装置に、前記プライオリティ設定ステップ、前記キュー制御ステップ、及び、前記アクセス要求処理ステップを実行させる情報処理装置の情報処理方法。 In an information processing method for processing an access request that is a request for access to a recording medium from an application,
A priority setting step for setting a specific priority for the access request from the application;
A queue control step for storing the access request with the priority set in a queue;
An access request processing step of processing the access request stored in the queue according to the priority ,
By causing the information processing apparatus to execute a filter driver that filters the access request and passes it to the file system driver, the information processing apparatus is caused to execute the priority setting step, the queue control step, and the access request processing step. Information processing method of information processing apparatus.
アプリケーションからの前記アクセス要求に対して、特有のプライオリティを設定するプライオリティ設定ステップと、
前記プライオリティが設定された前記アクセス要求を、キューに記憶させるキュー制御ステップと、
前記キューに記憶された前記アクセス要求を、前記プライオリティにしたがって処理するアクセス要求処理ステップと
をコンピュータに実行させるための、前記アクセス要求をフィルタリングし、ファイルシステムドライバに渡すフィルタドライバであるプログラム。 In a program that causes a computer to process an access request, which is a request for access to a recording medium from an application,
A priority setting step for setting a specific priority for the access request from the application;
A queue control step for storing the access request with the priority set in a queue;
A program that is a filter driver that filters the access request and passes the access request to a file system driver for causing a computer to execute an access request processing step of processing the access request stored in the queue according to the priority.
アプリケーションからの前記アクセス要求に対して、特有のプライオリティを設定するプライオリティ設定ステップと、
前記プライオリティが設定された前記アクセス要求を、キューに記憶させるキュー制御ステップと、
前記キューに記憶された前記アクセス要求を、前記プライオリティにしたがって処理するアクセス要求処理ステップと
をコンピュータに実行させるための、前記アクセス要求をフィルタリングし、ファイルシステムドライバに渡すフィルタドライバであるプログラムが記録されているプログラム記録媒体。 In a program recording medium in which a program for causing a computer to process an access request that is a request for access to the recording medium from an application is recorded.
A priority setting step for setting a specific priority for the access request from the application;
A queue control step for storing the access request with the priority set in a queue;
A program that is a filter driver for filtering the access request and passing it to a file system driver is recorded for causing the computer to execute an access request processing step of processing the access request stored in the queue according to the priority. Program recording medium.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004119852A JP4345559B2 (en) | 2004-04-15 | 2004-04-15 | Information processing apparatus, information processing method, program, and program recording medium |
US11/105,242 US7647455B2 (en) | 2004-04-15 | 2005-04-13 | Information processing apparatus and method, program, and program recording medium |
KR1020050030937A KR101125929B1 (en) | 2004-04-15 | 2005-04-14 | Information processing apparatus and method, and program recording medium |
CNB2005100793004A CN100429637C (en) | 2004-04-15 | 2005-04-15 | Information processing apparatus and method, program, and program recording medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004119852A JP4345559B2 (en) | 2004-04-15 | 2004-04-15 | Information processing apparatus, information processing method, program, and program recording medium |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005301854A JP2005301854A (en) | 2005-10-27 |
JP4345559B2 true JP4345559B2 (en) | 2009-10-14 |
Family
ID=35333276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004119852A Expired - Fee Related JP4345559B2 (en) | 2004-04-15 | 2004-04-15 | Information processing apparatus, information processing method, program, and program recording medium |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP4345559B2 (en) |
CN (1) | CN100429637C (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4941034B2 (en) * | 2007-03-20 | 2012-05-30 | 富士通株式会社 | Access control apparatus and access control method |
CN102123202A (en) * | 2011-01-26 | 2011-07-13 | 惠州Tcl移动通信有限公司 | Method and device for backing up various messages of mobile phone |
CN103019859B (en) * | 2012-12-05 | 2018-02-16 | 北京普泽创智数据技术有限公司 | A kind of method and system to service request scheduling |
CN115917519B (en) * | 2021-07-30 | 2023-09-08 | 株式会社软技 | Recording medium storing information processing program, information processing apparatus, and information processing method |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4791623A (en) * | 1986-04-03 | 1988-12-13 | Optotech, Inc. | File management system for use in an optical data storage system |
US6223243B1 (en) * | 1997-06-12 | 2001-04-24 | Nec Corporation | Access control method with plural users having I/O commands prioritized in queues corresponding to plural memory units |
US6347344B1 (en) * | 1998-10-14 | 2002-02-12 | Hitachi, Ltd. | Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor |
US6378036B2 (en) * | 1999-03-12 | 2002-04-23 | Diva Systems Corporation | Queuing architecture including a plurality of queues and associated method for scheduling disk access requests for video content |
JP2003514335A (en) * | 1999-11-10 | 2003-04-15 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | Record carrier, apparatus for reproducing record carrier, method for reproducing record carrier, apparatus for recording record carrier, and method for recording record carrier |
JP4045940B2 (en) * | 2002-04-05 | 2008-02-13 | ソニー株式会社 | Recording control apparatus, recording control method, program, and recording medium |
-
2004
- 2004-04-15 JP JP2004119852A patent/JP4345559B2/en not_active Expired - Fee Related
-
2005
- 2005-04-15 CN CNB2005100793004A patent/CN100429637C/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1734433A (en) | 2006-02-15 |
CN100429637C (en) | 2008-10-29 |
JP2005301854A (en) | 2005-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7769920B2 (en) | Information processing apparatus, information processing method, and program and recording medium used therewith | |
KR101125929B1 (en) | Information processing apparatus and method, and program recording medium | |
JP2010102715A (en) | Large block allocation for disk-based file system | |
JP2008107965A (en) | Information processing apparatus, information processing method, program, and program recording medium | |
JP4634477B2 (en) | Media file playback without interruption | |
US20050234847A1 (en) | Information storage apparatus, information storage method and information storage processing program | |
US6269420B1 (en) | Information recording/reproducing apparatus reducing disk access frequency to file management area and sharply accelerating record processing and reproduction processing | |
US7000077B2 (en) | Device/host coordinated prefetching storage system | |
JP4345559B2 (en) | Information processing apparatus, information processing method, program, and program recording medium | |
JP4232678B2 (en) | Information processing apparatus, information processing method, program, and program recording medium | |
JP4295638B2 (en) | Media processing device | |
US6496311B1 (en) | Data recording/reproducing unit, data recording method, data reproducing method, data recording/reproducing method, hard disk controller, and AV-data recording/reproducing method | |
JP2001517832A (en) | File system block sub-allocator | |
JP2001290607A (en) | Command queuing control method for device driver and computer system | |
JP3857039B2 (en) | Image mastering API | |
JP2000227866A (en) | Information recording and reproducing device | |
JPH0934782A (en) | Information storage device | |
JPH09128291A (en) | Cache memory managing method | |
JP2000353116A (en) | Data processing system and recording medium | |
JP2002222062A (en) | Disk device and information processing system | |
JPH03111959A (en) | External device controller | |
JPH05298702A (en) | Information memory employing cd-rom | |
JP2003228911A (en) | Multi-track recorder and its operation program | |
JPH10320125A (en) | Virtual hdd system by cd-r/cd-rw disk | |
JPH10116218A (en) | Data writing controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20081225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090127 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090324 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090416 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090610 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090623 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090706 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120724 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130724 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |