JP4232678B2 - 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 PDF

Info

Publication number
JP4232678B2
JP4232678B2 JP2004119853A JP2004119853A JP4232678B2 JP 4232678 B2 JP4232678 B2 JP 4232678B2 JP 2004119853 A JP2004119853 A JP 2004119853A JP 2004119853 A JP2004119853 A JP 2004119853A JP 4232678 B2 JP4232678 B2 JP 4232678B2
Authority
JP
Japan
Prior art keywords
irp
processing
filter
state
packet
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
Application number
JP2004119853A
Other languages
Japanese (ja)
Other versions
JP2005302221A (en
Inventor
真 木村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2004119853A priority Critical patent/JP4232678B2/en
Priority to US11/105,242 priority patent/US7647455B2/en
Priority to KR1020050030937A priority patent/KR101125929B1/en
Publication of JP2005302221A publication Critical patent/JP2005302221A/en
Application granted granted Critical
Publication of JP4232678B2 publication Critical patent/JP4232678B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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.

特開2004-005895号公報。JP 2004-005895 A.

本件出願人は、さらに、例えば、光ディスクの記録領域上の所定の大きさ以上の連続した空き領域のうち、直前にデータが記録された記録領域に最も近い位置の空き領域を予約し、その空き領域に、データを記録するディスクドライブも提案している。   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.

本発明の情報処理装置は、記録媒体に対するアクセス要求に対応する、デバイスドライバに対して要求する処理の情報を有するパケットの処理の許可または不許可を示す許可情報を設定し、設定した許可情報にしたがって、特定のアプリケーションからのアクセス要求に対するパケットの処理を行い、他のアプリケーションからのアクセス要求に対するパケットの処理を停止する状態であるポーズ状態、または、全てのアプリケーションからのアクセス要求に対するパケットの処理を行う状態であるラン状態を、現在の状態として設定する状態設定手段と、アプリケーションからのアクセス要求に対応するパケットを、キューに記憶させるキュー制御手段と、現在の状態がポーズ状態である場合、キューに記憶されたパケットのうちの特定のアプリケーションからのアクセス要求に対するパケットの処理を行い、現在の状態がラン状態である場合、キューに記憶された全てのパケットの処理を行うアクセス要求処理手段とを備えることを特徴とする。 The information processing apparatus of the present invention sets permission information indicating permission or non-permission of processing of a packet having processing information requested to the device driver corresponding to an access request to the recording medium , and sets the permission information to the set permission information Therefore, a process of the packet that corresponds to an access request from a particular application, the pause state is a state to stop processing the packet that corresponds to an access request from another application or access from all applications the run state is a state for processing the packet that corresponds to the request, the state setting means for setting as the current status, the packets corresponding to the access request from the application, and queue control means for storing in the queue, the current If the state is the pause state, among the packets stored in the queue Performs processing of a packet that corresponds to an access request from specific application, if the current state is the run state, and characterized in that it comprises an access request processing means for processing all the packets stored in the queue To do.

状態設定手段には、ユーザの操作に応じて、ポーズ状態またはラン状態を、現在の状態として設定させることができる。 The state setting means can set the pause state or the run state as the current state in accordance with a user operation .

情報処理装置には、キャッシュ機能の利用の有無を設定するキャッシュ機能設定手段をさらに設けることができ、アクセス要求処理手段には、さらに、キャッシュ機能設定手段によるキャッシュ機能の利用の有無の設定結果にしたがって、アクセス要求に対応するパケットの処理行わせることができる。 The information processing apparatus may further include a cache function setting means for setting whether or not the cache function is used, and the access request processing means further includes a result of setting whether or not the cache function is used by the cache function setting means. Therefore, it is possible to perform the processing of the packet corresponding to the access request.

アクセス要求処理手段には、特定のアプリケーションからのアクセス要求に対応するパケットの処理のみを、キャッシュ機能の利用の有無の設定結果にしたがって行わせることができる。 The access request processing unit, only the processing of the packet corresponding to an access request from a particular application, can be performed in accordance with the setting result of the presence or absence of use of the cache function.

情報処理装置は、アクセス要求に対応するパケットをフィルタリングし、ファイルシステムドライバに渡すフィルタドライバとすることができる。 The information processing apparatus can be a filter driver that filters a packet corresponding to an access request and passes the packet to a file system driver.

記録媒体に対して読み書きされるデータには、AV(Audio Visual)データが、少なくとも含まれるものとすることができる。   The data read / written to / from the recording medium can include at least AV (Audio Visual) data.

記録媒体は、その記録領域上の所定の大きさ以上の連続した空き領域のうち、直前にデータが記録された記録領域に最も近い位置の空き領域が予約され、データが記録されるものとすることができる。   In the recording medium, a free area closest to the recording area in which data was recorded immediately before is reserved among continuous free areas of a predetermined size or more on the recording area, and data is recorded. be able to.

本発明の情報処理方法は、記録媒体に対するアクセス要求に対応する、デバイスドライバに対して要求する処理の情報を有するパケットの処理の許可または不許可を示す許可情報を設定し、設定した許可情報にしたがって、特定のアプリケーションからのアクセス要求に対するパケットの処理を行い、他のアプリケーションからのアクセス要求に対するパケットの処理を停止する状態であるポーズ状態、または、全てのアプリケーションからのアクセス要求に対するパケットの処理を行う状態であるラン状態を、現在の状態として設定する状態設定ステップと、アプリケーションからのアクセス要求に対応するパケットを、キューに記憶させるキュー制御ステップと、現在の状態がポーズ状態である場合、キューに記憶されたパケットのうちの特定のアプリケーションからのアクセス要求に対するパケットの処理を行い、現在の状態がラン状態である場合、キューに記憶された全てのパケットの処理を行うアクセス要求処理ステップとを含むことを特徴とする。 The information processing method of the present invention sets permission information indicating permission or non-permission of processing of a packet having processing information requested to the device driver corresponding to an access request to the recording medium, and sets the permission information in the set permission information. Therefore, a process of the packet that corresponds to an access request from a particular application, the pause state is a state to stop processing the packet that corresponds to an access request from another application or access from all applications the run state is a state for processing the packet that corresponds to the request, the state setting step of setting as the current status, the packets corresponding to the access request from the application, and queues control step of storing in the queue, the current If the state is the pause state, packets stored in the queue Performs processing of a packet that corresponds to an access request from a particular application of out, if the current state is the run state, to include the access request processing step of performing processing for all the packets stored in the queue Features.

本発明のプログラムは、記録媒体に対するアクセス要求に対応する、デバイスドライバに対して要求する処理の情報を有するパケットの処理の許可または不許可を示す許可情報を設定し、設定した許可情報にしたがって、特定のアプリケーションからのアクセス要求に対するパケットの処理を行い、他のアプリケーションからのアクセス要求に対するパケットの処理を停止する状態であるポーズ状態、または、全てのアプリケーションからのアクセス要求に対するパケットの処理を行う状態であるラン状態を、現在の状態として設定する状態設定ステップと、アプリケーションからのアクセス要求に対応するパケットを、キューに記憶させるキュー制御ステップと、現在の状態がポーズ状態である場合、キューに記憶されたパケットのうちの特定のアプリケーションからのアクセス要求に対するパケットの処理を行い、現在の状態がラン状態である場合、キューに記憶された全てのパケットの処理を行うアクセス要求処理ステップとを含むことを特徴とする。 The program of the present invention sets permission information indicating permission or non-permission of processing of a packet having processing information requested to the device driver corresponding to an access request to the recording medium, and according to the set permission information, performs processing of a packet that corresponds to an access request from a particular application, the pause state is a state to stop processing the packet that corresponds to an access request from another application, or to an access request from all applications the run state is a state for processing the packet that corresponds, and state setting step of setting as the current status, the packets corresponding to the access request from the application, and queues control step of storing in the queue, the current state If a pause condition, the packet stored in the queue Chino performs processing of a packet that corresponds to an access request from a specific application, if the current state is the run state, characterized in that it comprises an access request processing step of performing processing for all the packets stored in the queue And

本発明のプログラム記録媒体に記録されているプログラムは、記録媒体に対するアクセス要求に対応する、デバイスドライバに対して要求する処理の情報を有するパケットの処理の許可または不許可を示す許可情報を設定し、設定した許可情報にしたがって、特定のアプリケーションからのアクセス要求に対するパケットの処理を行い、他のアプリケーションからのアクセス要求に対するパケットの処理を停止する状態であるポーズ状態、または、全てのアプリケーションからのアクセス要求に対するパケットの処理を行う状態であるラン状態を、現在の状態として設定する状態設定ステップと、アプリケーションからのアクセス要求に対応するパケットを、キューに記憶させるキュー制御ステップと、現在の状態がポーズ状態である場合、キューに記憶されたパケットのうちの特定のアプリケーションからのアクセス要求に対するパケットの処理を行い、現在の状態がラン状態である場合、キューに記憶された全てのパケットの処理を行うアクセス要求処理ステップとを含むことを特徴とする。 The program recorded on the program recording medium of the present invention sets permission information indicating permission or disapproval of processing of a packet having processing information requested to the device driver corresponding to an access request to the recording medium. according permission information set, performs the processing of the packet that corresponds to an access request from a specific application, other pause state is a state to stop processing the packet that corresponds to an access request from the application or, queue the run state process is a state that performs the packet that corresponds to an access request from all applications, and state setting step of setting as the current status, the packets corresponding to the access request from the application, and stores in a queue Control step and current state is paused Performing case, a process of the packet that corresponds to an access request from a particular application of the packets stored in the queue, if the current state is the run state, the processing of all the packets stored in the queue And an access request processing step.

本発明においては、記録媒体に対するアクセス要求に対応する、デバイスドライバに対して要求する処理の情報を有するパケットの処理の許可または不許可を示す許可情報を設定し、設定した許可情報にしたがって、特定のアプリケーションからのアクセス要求に対するパケットの処理を行い、他のアプリケーションからのアクセス要求に対するパケットの処理を停止する状態であるポーズ状態、または、全てのアプリケーションからのアクセス要求に対するパケットの処理を行う状態であるラン状態が、現在の状態として設定される。そして、アプリケーションからのアクセス要求に対応するパケットが、キューに記憶され、現在の状態がポーズ状態である場合、キューに記憶されたパケットのうちの特定のアプリケーションからのアクセス要求に対するパケットの処理が行われ、現在の状態がラン状態である場合、キューに記憶された全てのパケットの処理が行われる。 In the present invention, permission information indicating permission or non-permission of processing of a packet having processing information requested to the device driver corresponding to an access request to the recording medium is set, and specified according to the set permission information. performs processing of packets corresponds to the access request from the application of the pause state is a state to stop processing the packet that corresponds to the access request from another application, or, pair access request from all applications The run state in which the corresponding packet is processed is set as the current state. The packets corresponding to the access request from the application is stored in the queue, the current state be a pause state, the packet that corresponds to an access request from a particular application of the packets stored in the queue If processing is performed and the current state is the run state, all the packets stored in the queue are processed.

本発明によれば、ある特定のアプリケーションからのアクセス要求のみを許可することができ、その結果、例えば、データの記録または再生を、リアルタイムで行うことが可能となる。   According to the present invention, only an access request from a specific application can be permitted. As a result, for example, data can be recorded or reproduced in real time.

以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。   Embodiments of the present invention will be described below. Correspondences between constituent elements described in the claims and specific examples in the embodiments of the present invention are exemplified as follows. This description is to confirm that specific examples supporting the invention described in the claims are described in the embodiments of the invention. Therefore, even if there are specific examples that are described in the embodiment of the invention but are not described here as corresponding to the configuration requirements, the specific examples are not included in the configuration. It does not mean that it does not correspond to a requirement. On the contrary, even if a specific example is described here as corresponding to a configuration requirement, this means that the specific example does not correspond to a configuration requirement other than the configuration requirement. not.

さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。   Further, this description does not mean that all the inventions corresponding to the specific examples described in the embodiments of the invention are described in the claims. In other words, this description is an invention corresponding to the specific example described in the embodiment of the invention, and the existence of an invention not described in the claims of this application, that is, in the future, a divisional application will be made. Nor does it deny the existence of an invention added by amendment.

請求項1に記載の情報処理装置は、
アプリケーションからの記録媒体へのアクセスの要求であるアクセス要求を処理する情報処理装置(例えば、図4のPDフィルタ53など)において、
前記記録媒体に対する前記アクセス要求に対応する、デバイスドライバに対して要求する処理の情報を有するパケットの処理の許可または不許可を示す許可情報を設定し、設定した前記許可情報にしたがって、特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、他のアプリケーションからの前記アクセス要求に対する前記パケットの処理を停止する状態であるポーズ状態、または、全てのアプリケーションからの前記アクセス要求に対する前記パケットの処理を行う状態であるラン状態を、現在の状態として設定する状態設定手段(例えば、図15のステップS157やS159の処理を行う図6のフィルタコア53Aなど)と、
アプリケーションからの前記アクセス要求に対応する前記パケットを、キューに記憶させるキュー制御手段(例えば、図15のステップS165の処理を行う図6のフィルタコア53Aなど)と、
前記現在の状態が前記ポーズ状態である場合、前記キューに記憶された前記パケットのうちの前記特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、前記現在の状態が前記ラン状態である場合、前記キューに記憶された全ての前記パケットの処理を行うアクセス要求処理手段(例えば、図16のステップS173やS175の処理を行う図6のフィルタコア53A)と
を備えることを特徴とする。
An information processing apparatus according to claim 1 is provided.
In an information processing apparatus (for example, PD filter 53 in FIG. 4) that processes an access request that is a request for access to a recording medium from an application,
Set permission information indicating permission or non-permission of processing of a packet having processing information requested to a device driver corresponding to the access request to the recording medium, and specify a specific application in accordance with the permission information set. said access the corresponding to the request performs a process of the packet, pause state is a state to stop processing the packet that corresponds to the access request from another application, or the access from all the applications from the run state is a state in which the processing of the packet that corresponds to the request, the state setting means for setting as the current state (e.g., such as the filter core 53A in FIG. 6 which performs the processing of step S157 and S159 of FIG. 15) and ,
Queue control means for storing the packet corresponding to the access request from the application in a queue (for example, the filter core 53A in FIG. 6 that performs the process of step S165 in FIG. 15);
If the current state is the pause state, performs processing of the packet to the correspond to the access request from a specific application of said packet stored in the queue, the current state said run And an access request processing means for processing all the packets stored in the queue (for example, the filter core 53A in FIG. 6 that performs the processing in steps S173 and S175 in FIG. 16). And

請求項3に記載の情報処理装置は、
キャッシュ機能の利用の有無を設定するキャッシュ機能設定手段(例えば、図23のステップS304やS305の処理を行う図19のフィルタコア53Aなど)をさらに備え、
前記アクセス要求処理手段は、さらに、前記キャッシュ機能設定手段によるキャッシュ機能の利用の有無の設定結果にしたがって、前記アクセス要求に対応する前記パケットの処理行う
ことを特徴とする。
An information processing apparatus according to claim 3 is provided.
A cache function setting means for setting whether or not the cache function is used (for example, the filter core 53A in FIG. 19 that performs the processing in steps S304 and S305 in FIG. 23);
It said access request processing means further in accordance with the cache function setting means by use whether setting result of caching, and performs processing of the packet corresponding to the access request.

請求項5に記載の情報処理装置は、
前記アクセス要求に対応する前記パケットをフィルタリングし、ファイルシステムドライバに渡すフィルタドライバ(例えば、図4のPDフィルタ53など)である
ことを特徴とする。
The information processing apparatus according to claim 5 is:
A filter driver that filters the packet corresponding to the access request and passes the packet to a file system driver (for example, the PD filter 53 in FIG. 4).

請求項8に記載の情報処理方法は、
アプリケーションからの記録媒体へのアクセスの要求であるアクセス要求を処理する情報処理方法において、
前記記録媒体に対する前記アクセス要求に対応する、デバイスドライバに対して要求する処理の情報を有するパケットの処理の許可または不許可を示す許可情報を設定し、設定した前記許可情報にしたがって、特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、他のアプリケーションからの前記アクセス要求に対する前記パケットの処理を停止する状態であるポーズ状態、または、全てのアプリケーションからの前記アクセス要求に対する前記パケットの処理を行う状態であるラン状態を、現在の状態として設定する状態設定ステップ(例えば、図15のステップS157やS159など)と、
アプリケーションからの前記アクセス要求に対応する前記パケットを、キューに記憶させるキュー制御ステップ(例えば、図15のステップS165など)と、
前記現在の状態が前記ポーズ状態である場合、前記キューに記憶された前記パケットのうちの前記特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、前記現在の状態が前記ラン状態である場合、前記キューに記憶された全ての前記パケットの処理を行うアクセス要求処理ステップ(例えば、図16のステップS173やS175など)と
を含むことを特徴とする。
The information processing method according to claim 8 comprises:
In an information processing method for processing an access request that is a request for access to a recording medium from an application,
Set permission information indicating permission or non-permission of processing of a packet having processing information requested to a device driver corresponding to the access request to the recording medium, and specify a specific application in accordance with the permission information set. said access the corresponding to the request performs a process of the packet, pause state is a state to stop processing the packet that corresponds to the access request from another application, or the access from all the applications from the run state is a state in which the processing of the packet that corresponds to the request, the state setting step of setting as the current state (for example, step S157 and S159 of FIG. 15),
A queue control step (for example, step S165 in FIG. 15) for storing the packet corresponding to the access request from the application in a queue;
If the current state is the pause state, performs processing of the packet to the correspond to the access request from a specific application of said packet stored in the queue, the current state said run If it is in a state, it includes an access request processing step (for example, steps S173 and S175 in FIG. 16) for processing all the packets stored in the queue.

請求項9に記載のプログラムおよび請求項10に記載のプログラム記録媒体に記録され
ているプログラムは、
アプリケーションからの記録媒体へのアクセスの要求であるアクセス要求の処理を、コンピュータに行わせるプログラムにおいて、
前記記録媒体に対する前記アクセス要求に対応する、デバイスドライバに対して要求する処理の情報を有するパケットの処理の許可または不許可を示す許可情報を設定し、設定した前記許可情報にしたがって、特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、他のアプリケーションからの前記アクセス要求に対する前記パケットの処理を停止する状態であるポーズ状態、または、全てのアプリケーションからの前記アクセス要求に対する前記パケットの処理を行う状態であるラン状態を、現在の状態として設定する状態設定ステップ(例えば、図15のステップS157やS159など)と、
アプリケーションからの前記アクセス要求に対応する前記パケットを、キューに記憶させるキュー制御ステップ(例えば、図15のステップS165など)と、
前記現在の状態が前記ポーズ状態である場合、前記キューに記憶された前記パケットのうちの前記特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、前記現在の状態が前記ラン状態である場合、前記キューに記憶された全ての前記パケットの処理を行うアクセス要求処理ステップ(例えば、図16のステップS173やS175など)と
を含むことを特徴とする。
The program according to claim 9 and the program recorded on the program recording medium according to claim 10 are:
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,
Set permission information indicating permission or non-permission of processing of a packet having processing information requested to a device driver corresponding to the access request to the recording medium, and specify a specific application in accordance with the permission information set. said access the corresponding to the request performs a process of the packet, pause state is a state to stop processing the packet that corresponds to the access request from another application, or the access from all the applications from the run state is a state in which the processing of the packet that corresponds to the request, the state setting step of setting as the current state (for example, step S157 and S159 of FIG. 15),
A queue control step (for example, step S165 in FIG. 15) for storing the packet corresponding to the access request from the application in a queue;
If the current state is the pause state, performs processing of the packet to the correspond to the access request from a specific application of said packet stored in the queue, the current state said run If it is in a state, it includes an access request processing step (for example, steps S173 and S175 in FIG. 16) for processing all the packets stored in the queue.

以下、図面を参照して、本発明の実施の形態について説明する。   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 / output interface 20 is connected to the CPU 12 via the bus 11, and the CPU 12 operates the input unit 17 including a keyboard, a mouse, a microphone, and the like by the user via the input / output interface 20. When a command is input by the equalization, a program stored in a ROM (Read Only Memory) 13 is executed accordingly. Alternatively, the CPU 12 may be a program stored in the hard disk 15, a program transferred from a satellite or a network, received by the communication unit 18 and installed in the hard disk 15, or a removable recording medium 21 installed in the drive 19. The program read and installed in the hard disk 15 is loaded into a RAM (Random Access Memory) 14 and executed. As a result, the CPU 12 performs processing according to a flowchart described later or processing performed according to the configuration of a block diagram described later. Then, the CPU 12 outputs the processing result from the output unit 16 constituted by an LCD (Liquid Crystal Display), a speaker, or the like, for example, via the input / output interface 20 as necessary, or from the communication unit 18. Transmission and further recording on the hard disk 15 are performed.

また、PC1においては、入出力インタフェース20に、IEEE1394の規格に準拠した通信制御を行うIEEE1394I/F(InterFace)22が接続されている。IEEE1394I/F22には、1394ケーブル4を介して、ドライブ2が接続されている。CPU12は、バス11、入出力インタフェース20、IEEE1394I/F22、および1394ケーブル4を介して、ドライブ2にアクセスし、そのドライブ2に装着されている光ディスク3に対して、データを読み書きすることができる。   In the PC 1, an IEEE1394 I / F (InterFace) 22 that performs communication control conforming to the IEEE1394 standard is connected to the input / output interface 20. The drive 2 is connected to the IEEE1394 I / F 22 via the 1394 cable 4. The CPU 12 can access the drive 2 via the bus 11, the input / output interface 20, the IEEE1394 I / F 22, and the 1394 cable 4, and read / write data from / to the optical disk 3 mounted on the drive 2. .

ここで、CPU12は、OSや各種のアプリケーションのプログラムを実行するが、これらのプログラムは、PC1に内蔵されている記録媒体としてのハードディスク15やROM13に予め記録しておくことができる。   Here, the CPU 12 executes programs of the OS and various applications, and these programs can be recorded in advance on a hard disk 15 or a ROM 13 as a recording medium built in the PC 1.

あるいはまた、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto Optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体21に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体21は、いわゆるパッケージソフトウエアとして提供することができる。   Alternatively, the program is temporarily stored in a removable recording medium 21 such as a flexible disk, a CD-ROM (Compact Disc Read Only Memory), an MO (Magneto Optical) disk, a DVD (Digital Versatile Disc), a magnetic disk, or a semiconductor memory. It can be stored permanently (recorded). Such a removable recording medium 21 can be provided as so-called package software.

なお、プログラムは、上述したようなリムーバブル記録媒体21からPC1にインストールする他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、PC1に無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、PC1に有線で転送し、PC1では、そのようにして転送されてくるプログラムを、通信部18で受信し、内蔵するハードディスク15にインストールすることができる。   The program is installed on the PC 1 from the removable recording medium 21 as described above, or transferred from the download site to the PC 1 via a digital satellite broadcasting artificial satellite, or a LAN (Local Area Network), The program can be transferred to the PC 1 via a network such as the Internet. The PC 1 can receive the program transferred in this way by the communication unit 18 and install it in the built-in hard disk 15.

次に、図3は、図2のCPU12が実行するプログラムを示す図である。   Next, FIG. 3 is a diagram showing a program executed by the CPU 12 of FIG.

例えば、OS30、およびアプリケーション31乃至33(のプログラム)が、少なくとも、図2のハードディスク15にインストールされており、CPU12は、PC1の電源がオンにされると、ハードディスク15からRAM14に、OS30をロードして実行する。さらに、例えば、ユーザが入力部17を操作するなどして、アプリケーション31や、32,33の起動を要求すると、CPU12は、ハードディスク15からRAM14に、アプリケーション31や、32,33をロードし、OS30の制御の下で実行する。   For example, the OS 30 and the applications 31 to 33 (programs) are installed at least on the hard disk 15 in FIG. 2, and the CPU 12 loads the OS 30 from the hard disk 15 to the RAM 14 when the PC 1 is turned on. And run. Further, for example, when the user requests activation of the application 31, 32, 33 by operating the input unit 17, the CPU 12 loads the application 31, 32, 33 from the hard disk 15 to the RAM 14, and the OS 30. Run under control.

そして、アプリケーション31乃至33が、例えば、ドライブ2に装着された光ディスク3へのアクセスの要求であるアクセス要求を行うと、OS30は、そのアクセス要求を処理する。これにより、ドライブ2において、アプリケーション31乃至33からのアクセス要求によって記録が要求されたデータが、光ディスク3に記録される。あるいは、ドライブ2において、アプリケーション31乃至33からのアクセス要求によって再生(読み出し)が要求されたデータが、光ディスク3から読み出され、OS30を介して、アクセス要求を行ったアプリケーションに渡される。   When the applications 31 to 33 make an access request, which is a request for accessing the optical disc 3 mounted on the drive 2, for example, the OS 30 processes the access request. As a result, in the drive 2, the data requested to be recorded by the access request from the applications 31 to 33 is recorded on the optical disc 3. Alternatively, in the drive 2, data that is requested to be reproduced (read) by the access request from the applications 31 to 33 is read from the optical disc 3 and passed to the application that has made the access request via the OS 30.

なお、図2のハードディスク15にインストールするアプリケーションは、アプリケーション31乃至33の3つに限定されるものではなく、1つや、2つ、4以上であっても良い。   2 are not limited to the three applications 31 to 33, and may be one, two, four, or more.

但し、ここでは、ハードディスク15にインストールされている3つのアプリケーション31乃至33のうちの1つであるアプリケーション33が、外部からのAVデータの取り込みや、AVデータの編集、記録、再生などを行うアプリケーションとなっているものとする。そこで、アプリケーション33を、以下、適宜、AVアプリケーション33ともいう。   However, here, the application 33 that is one of the three applications 31 to 33 installed on the hard disk 15 is an application that imports AV data from outside, edits, records, and plays back AV data. It shall be. Therefore, the application 33 is also referred to as an AV application 33 as appropriate hereinafter.

AVアプリケーション33は、DLL(Dynamic Link Library)であるPD_API(PD_API.DLL)41を呼び出し、このPD_API41を介して、光ディスク3に対するアクセス要求を行う。PD_API41は、光ディスク3に対するアクセスに関する、後述する固有のAPI(Application Program Interface)を提供するDLLである。   The AV application 33 calls a PD_API (PD_API.DLL) 41 that is a DLL (Dynamic Link Library), and issues an access request to the optical disc 3 via the PD_API 41. The PD_API 41 is a DLL that provides a unique API (Application Program Interface) to be described later regarding access to the optical disc 3.

次に、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 OS 30, for example, Unix (R), Linux, or what is called Windows (R) of Microsoft Corporation, or any other OS can be adopted. For example, Windows (R) NT-based OS is adopted. Note that Windows (R) NT-based OSs currently include "Windows (R) NT", "Windows (R) 2000", and "Windows (R) XP".

図4は、OS30として、Windows(R)のNT系のOSが採用されている場合の、ドライブ2(の光ディスク3)へのアクセスに関する部分のOS30の構成例を示している。   FIG. 4 shows a configuration example of the portion of the OS 30 relating to access to the drive 2 (the optical disk 3 thereof) when the Windows® NT-based OS is adopted as the OS 30.

なお、図4では、特に、OS30におけるデバイスドライバのレイヤ(layer)構成を、アプリケーション31乃至33との関係が分かるように示してある。   In FIG. 4, in particular, the layer configuration of the device driver in the OS 30 is shown so that the relationship with the applications 31 to 33 can be understood.

Windows(R)のNT系のOSであるOS30は、マイクロカーネル技術とオブジェクト指向技術をベースとし、各サービスを、サブシステムによって実装している。   An OS 30 that is a Windows® NT-based OS is based on microkernel technology and object-oriented technology, and each service is implemented by a subsystem.

Win32サブシステム(Win32 SubSystem)51は、サブシステムの1つで、アプリケーション31乃至33に対して、各種のAPI(関数)を提供し、例えば、メモリ管理、プロセス管理、グラフィックス描画などを行う。   The Win32 SubSystem 51 is one of the subsystems, and provides various APIs (functions) to the applications 31 to 33, and performs, for example, memory management, process management, graphics drawing, and the like.

即ち、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 applications 31 to 33, the Win32 subsystem 51 sends an I / O request corresponding to the API function to the NT I / O manager ( (NT I / O Manager) 52.

なお、Win32サブシステム51が提供するAPI関数としては、例えば、ファイルの生成を行うCreateFile()、ファイル(ファイルに記録されたデータ)の読み出しを行うReadFile()、ファイル(ファイルへのデータ)の書き込みを行うWriteFile()、その他の各種の処理を行うDeviceIoControl()などがある。   Note that API functions provided by the Win32 subsystem 51 include, for example, CreateFile () for generating a file, ReadFile () for reading a file (data recorded in a file), and a file (data to a file). There are WriteFile () for writing, DeviceIoControl () for various other processes, and the like.

NT入出力マネージャ52は、レイヤ構造のデバイスドライバ(Device Driver)に対して、IRP(I/O Request Packet)を渡すためのサービスを提供する。   The NT input / output manager 52 provides a service for passing an IRP (I / O Request Packet) to a device driver having a layer structure.

ここで、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 / output manager 52, for example, an I / O request according to CreateFile () by the Win32 subsystem 51 is converted into an IRP of IRP_MJ_CREATE. Also, for example, ReadFile () and WriteFile () are converted into IRPs of IRP_MJ_READ and IRP_MJ_WRITE, respectively, and DeviceIoControl () is converted into an IRP of IRP_MJ_DEVICE_CONTROL.

ここで、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 PD storage 55 that is a storage class driver, a PD_FS 54 that is a file system driver (FileSystem Driver) of a layer one level higher than the storage class driver, and a file system There are three device drivers of the PD filter 53 which is a file system filter driver (FileSystem Filter Driver) in a layer one level higher than the driver.

従って、本実施の形態では、NT入出力マネージャ52は、これらのPDフィルタ53、PD_FS54、PDストレージ55に対して、IRPを渡すためのサービスを提供する。   Therefore, in the present embodiment, the NT input / output manager 52 provides a service for passing the IRP to the PD filter 53, PD_FS 54, and PD storage 55.

具体的には、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 / output manager 52 converts an I / O request from the Win32 subsystem 51 into an IRP and outputs it to the PD filter 53, for example. Then, the PD filter 53 outputs a request according to the IRP from the NT input / output manager 52, for example, to the NT input / output manager 52. The NT input / output manager 52 converts the request from the PD filter 53 into an IRP. Then, the data is output to the PD_FS 54 of the next lower layer. Further, when the PD_FS 54 outputs a request according to the IRP from the NT input / output manager 52 to, for example, the NT input / output manager 52, the NT input / output manager 52 converts the request from the PD_FS 54 into an IRP. The data is output to the PD storage 55 of the lower layer.

PDフィルタ53は、PDドライブであるドライブ2用のファイルシステムフィルタドライバであり、かつ、後述するPD_FS54の上位のファイルシステムフィルタドライバである。PDフィルタ53は、アプリケーション31乃至33から、Win32サブシステム51およびNT入出力マネージャ52を介して供給される、ファイルシステムに関連するファイルシステム要求その他の要求(request)のフィルタリングを行い、そのフィルタリングの結果、PD_FS54に渡すべき要求を得て、NT入出力マネージャ52を介して、PD_FS54に出力する等の処理を行う。   The PD filter 53 is a file system filter driver for the drive 2 that is a PD drive, and is a file system filter driver that is an upper layer of the PD_FS 54 described later. The PD filter 53 performs filtering of file system requests and other requests related to the file system supplied from the applications 31 to 33 via the Win32 subsystem 51 and the NT input / output manager 52. As a result, a request to be passed to the PD_FS 54 is obtained, and processing such as outputting to the PD_FS 54 via the NT input / output manager 52 is performed.

なお、PDフィルタ53は、フィルタコア53Aを有し、アプリケーション31乃至33からの要求のフィルタリングなどのPDフィルタ53における主要な処理は、フィルタコア53Aが行う。また、PDフィルタ53は、例えば、Windows(R)レジストリであるレジストリ58に設定(記憶)されている情報を参照して、要求のフィルタリングを行う。   The PD filter 53 has a filter core 53A, and main processing in the PD filter 53 such as filtering of requests from the applications 31 to 33 is performed by the filter core 53A. Further, the PD filter 53 performs request filtering by referring to information set (stored) in the registry 58 which is a Windows (R) registry, for example.

PD_FS54は、PDドライブであるドライブ2用のファイルシステムドライバで、ドライブ2に装着されたPDである光ディスク3に記録された(記録される)ファイルの管理を行う。即ち、PD_FS54は、例えば、光ディスク3に記録されたデータ(ファイル)の管理情報としてのファイルシステムに基づき、PDフィルタ53からNT入出力マネージャ52を介して要求されたファイルの書き込みや読み出しの要求を、NT入出力マネージャ52を介して、PDストレージ55に出力する。   The PD_FS 54 is a file system driver for the drive 2 that is a PD drive, and manages files recorded (recorded) on the optical disc 3 that is a PD mounted in the drive 2. That is, the PD_FS 54 makes a request for writing or reading a file requested from the PD filter 53 via the NT input / output manager 52 based on, for example, a file system as management information of data (file) recorded on the optical disc 3. And output to the PD storage 55 via the NT input / output manager 52.

ここで、ファイルシステムドライバは、一般に、ファイルストリーム(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 NT cache manager 59 has a cache function, and the PD_FS 54 uses the NT cache manager 59 to provide a cache function.

なお、PD_FS54は、FSコア54Aを有し、PD_FS54における主要な処理は、FSコア54Aが行う。   The PD_FS 54 has an FS core 54A, and main processing in the PD_FS 54 is performed by the FS core 54A.

PDストレージ55は、PDドライブであるドライブ2の実際のデバイスドライバにあたるストレージクラスドライバで、上位のレイヤのデバイスドライバであるPD_FS54から、NT入出力マネージャ52を介して供給される要求としてのIRPを、例えば、SCSI(Small Computer System Interface)コード(SCSI Code)に変換し、SBP(Serial Bus Protocol)2ドライバ56に出力する。   The PD storage 55 is a storage class driver that corresponds to an actual device driver of the drive 2 that is a PD drive, and an IRP as a request that is supplied from the PD_FS 54 that is a device driver of a higher layer via the NT input / output manager 52. For example, it is converted into a SCSI (Small Computer System Interface) code (SCSI Code) and output to an SBP (Serial Bus Protocol) 2 driver 56.

ここで、PDストレージ55において、IRPをSCSIコードに変換するのは、SCSIコードが、後段のSBP2ドライバ56で扱われるSBP2と、いわば親和性が良いからである。   Here, the reason why the IRP is converted into the SCSI code in the PD storage 55 is that the SCSI code has a good affinity with SBP2 handled by the SBP2 driver 56 in the subsequent stage.

SBP2ドライバ56は、PDストレージ55からのSCSIコードを、SBP2に準拠したデータであるSBP2データに変換し(SBP2プロトコルに変換し)、1394バスドライバ(IEEE1394 bus Driver)57に供給する。   The SBP2 driver 56 converts the SCSI code from the PD storage 55 into SBP2 data, which is data compliant with SBP2 (converted into the SBP2 protocol), and supplies it to a 1394 bus driver 57.

ここで、本実施の形態では、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 SBP2 driver 56, but SBP2 It is also possible to adopt a protocol other than.

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 SBP2 driver 56 to the drive 2 and to read from the optical disk 3 transmitted from the drive 2. Received data.

ここで、本実施の形態では、PC1とドライブ2との間で、IEEE1394の規格に準拠した通信を行うこととしているが、PC1とドライブ2との間では、その他の通信を行うことが可能である。この場合、1394バスドライバ57に代えて、PC1とドライブ2との間の通信に対応したバスドライバが用いられる。   Here, in the present embodiment, communication conforming to the IEEE1394 standard is performed between the PC 1 and the drive 2, but other communication can be performed between the PC 1 and the drive 2. is there. In this case, instead of the 1394 bus driver 57, a bus driver corresponding to communication between the PC 1 and the drive 2 is used.

なお、図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_API 41 used by the AV application 33 among the applications 31 to 33 provides a unique API (API function) as described above. That is, when the unique API function is called from the AV application 33, the PD_API 41 uses the API function DeviceIoCotrol () provided by the Win32 subsystem 51 in accordance with the API function, so that the user-defined IOCTL is changed. The IRP of the designated IRP_MJ_DEVICE_CONTROL is supplied to the PD filter 53 via the NT input / output manager 52. Thereby, the PD_API 41 controls a unique function of the PD filter 53, that is, a function represented by the user-defined IOCTL.

このような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 AV application 33 including such a PD_API 41 is recorded on, for example, the removable recording medium 21 (FIG. 2) together with the PD filter 53, the PD_FS 54, and the PD storage 55 necessary for using the drive 2 which is a PD drive. Can be sold. Further, the removable recording medium 21 on which the AV application 33 including the PD_API 41, the PD filter 53, the PD_FS 54, and the PD storage 55 are recorded is sold separately, for example, bundled with the drive 2 and attached as an accessory of the drive 2 Can be sold.

ここで、図4において、アプリケーション31乃至33と、Win32サブシステム51とは、ユーザモード(User Mode)で動作し、NT入出力マネージャ52、PDフィルタ53、PD_FS54、PDストレージ55、SBP2ドライバ56、および1394バスドライバ57は、カーネルモード(Kernel Mode)で動作する。   4, the applications 31 to 33 and the Win32 subsystem 51 operate in the user mode (User Mode), and the NT input / output manager 52, PD filter 53, PD_FS 54, PD storage 55, SBP2 driver 56, The 1394 bus driver 57 operates in a kernel mode.

さらに、図4では、NT入出力マネージャ52が、IRPを、ファイルシステムフィルタドライバであるPDフィルタ53や、ファイルシステムドライバであるPD_FS54を渡すことによって、ファイルシステムフィルタドライバやファイルシステムドライバに対して、処理の要求を行うこととしたが、Windows(R)のNT系のOSのNT入出力マネージャ52は、IRPの他、FastIOを、ファイルシステムフィルタドライバやファイルシステムドライバに渡すことにより、処理の要求を行うことが可能である。   Furthermore, in FIG. 4, the NT input / output manager 52 passes the IRP to the file system filter driver or the file system driver by passing the PD filter 53 that is the file system filter driver or the PD_FS 54 that is the file system driver. The NT input / output manager 52 of the Windows (R) NT-based OS passes the FastIO to the file system filter driver and file system driver in addition to the IRP. Can be done.

即ち、NT入出力マネージャ52は、ファイルシステムフィルタドライバやファイルシステムドライバに対して、IRPの他、FastIOを渡すためのサービスも提供し、これにより、ファイルシステムフィルタドライバやファイルシステムドライバに対して、処理の要求を行う。   That is, the NT input / output manager 52 provides a service for passing FastIO in addition to the IRP to the file system filter driver and the file system driver. Request processing.

従って、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 NT cache manager 59.

また、以下では、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 applications 31 to 33, the PD filter 53, PD_FS 54, PD storage 55, SBP2 driver 56, 1394 bus driver in the OS 30 of FIG. An outline of the process 57 will be described.

なお、以下の説明と図5以降の図面においては、それぞれ、Win32サブシステム51およびNT入出力マネージャ52の説明と図示を、適宜省略する。   In the following description and the drawings after FIG. 5, the description and illustration of the Win32 subsystem 51 and the NT input / output manager 52 are omitted as appropriate.

アプリケーション31乃至33が、例えば、光ディスク3に対するアクセスを要求するAPI関数を呼び出すと、そのAPI関数に応じた要求が、Win32サブシステム51からNT入出力マネージャ52に供給され、NT入出力マネージャ52は、Win32サブシステム51からの要求に応じたIRPが、PDフィルタ53に供給される。   For example, when the applications 31 to 33 call an API function that requests access to the optical disc 3, a request corresponding to the API function is supplied from the Win32 subsystem 51 to the NT input / output manager 52. The IRP corresponding to the request from the Win32 subsystem 51 is supplied to the PD filter 53.

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 filter 53 receives the IRP from the NT input / output manager 52 and proceeds to step S2. In step S2, the PD filter 53 filters the IRP from the NT input / output manager 52, proceeds to step S3, and queues the IRP to be supplied to the PD_FS 54. That is, the PD filter 53 supplies and stores the IRP from the NT input / output manager 52 in a queue not shown in FIG.

さらに、PDフィルタ53は、キューに記憶されたIRPを読み出し、NT入出力マネージャ52を介して、PD_FS54に供給して、ステップS4に進む。   Further, the PD filter 53 reads the IRP stored in the queue, supplies it to the PD_FS 54 via the NT input / output manager 52, and proceeds to step S4.

ステップS4では、PD_FS54は、PDフィルタ53からのIRPによって要求されているデータについて、NTキャッシュマネージャ59のキャッシュ機能を利用するのに必要な処理としてのキャッシュ処理を行い、ステップS5に進み、例えば、PDフィルタ53からのIRPによって要求されているデータが、NTキャッシュマネージャ59にキャッシュされているかどうかを判定する。   In step S4, the PD_FS 54 performs a cache process as a process necessary for using the cache function of the NT cache manager 59 for the data requested by the IRP from the PD filter 53, and proceeds to step S5. It is determined whether the data requested by the IRP from the PD filter 53 is cached in the NT cache manager 59.

ステップ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 PD filter 53 is cached in the NT cache manager 59, the process proceeds to step S6, and the PD_FS 54 is requested by the IRP from the PD filter 53. For example, an application that calls an API function corresponding to the IRP via the PD filter 53 and the Win32 subsystem via the PD filter 53 and the Win32 subsystem. To any one of 33).

一方、ステップ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 PD filter 53 is not cached in the NT cache manager 59, the process proceeds to step S7, and the PD_FS 54 performs the IRP from the PD filter 53. Then, the data is supplied to the PD storage 55 via the NT input / output manager 52, and the process proceeds to step S8.

ステップS8では、PDストレージ55は、PD_FS54からのIRPを、対応するSCSIコードに変換し、SBP2ドライバ56に供給して、ステップS9に進む。ステップS9では、SBP2ドライバ56は、PDストレージ55からのSCSIコードを、SBP2データに変換し、1394バスドライバ57に供給して、ステップS10に進む。   In step S8, the PD storage 55 converts the IRP from the PD_FS 54 into a corresponding SCSI code, supplies it to the SBP2 driver 56, and proceeds to step S9. In step S9, the SBP2 driver 56 converts the SCSI code from the PD storage 55 into SBP2 data, supplies it to the 1394 bus driver 57, and proceeds to step S10.

ステップS10では、1394バスドライバ57は、IEEE1394I/F22(図2)を制御することにより、SBP2ドライバ56からのSBP2データを、ドライブ2に送信する。   In step S10, the 1394 bus driver 57 transmits the SBP2 data from the SBP2 driver 56 to the drive 2 by controlling the IEEE1394 I / F 22 (FIG. 2).

そして、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, SBP2 driver 56, PD storage 55, PD_FS54. The IRP received in step S1 is returned to the application (in FIG. 4, one of the applications 31 to 33) via the PD filter 53 and the Win32 subsystem 51.

ところで、図4において、アプリケーション31乃至33のうちのいずれか1のアプリケーションが光ディスク3にアクセスする前に、他の1のアプリケーションが光ディスク3にアクセスしていると、1のアプリケーションが光ディスク3にアクセスするときに、ドライブ2においてシークが発生する。   By the way, in FIG. 4, if any one of the applications 31 to 33 accesses the optical disc 3 before any one of the applications accesses the optical disc 3, the one application accesses the optical disc 3. When this occurs, a seek occurs in the drive 2.

また、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 application 33 among the applications 31 to 33 is an AV application that performs writing (recording) and reading (reproduction) of AV data on the optical disk 3 that is a PD.

従って、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 AV application 33, the application 31 or 32 can access the optical disc 3. If a seek occurs or the AV application 33 waits for access, the AV application 33 is prevented from reading and writing AV data in real time.

そこで、PDフィルタ53は、以下の第1乃至第3の機能の1以上を実装しており、その実装しているいずれか1の機能によって、光ディスク3に対するAVデータのリアルタイムでの読み書きが妨げられることを防止し、AVデータをリアルタイムで読み書きすることを保証するようになっている。   Therefore, the PD filter 53 is mounted with one or more of the following first to third functions, and any one of the mounted functions prevents reading / writing of AV data from / to the optical disc 3 in real time. It is designed to ensure that AV data is read and written in real time.

即ち、第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 PD filter 53 sets a specific priority for the IRP corresponding to the access request to the optical disc 3 from the applications 31 to 33, and the specific priority is set. Store the IRP in the queue. Then, the PD filter 53 processes the IRP stored in the queue according to the priority set in the IRP. Thereby, the PD filter 53 preferentially processes, for example, an IRP from the AV application 33 (an IRP corresponding to an access request from the AV application 33), and guarantees the AV application 33 to read and write AV data in real time. .

図6は、以上のような第1の機能を実装したPDフィルタ53の構成例を示している。なお、図6においては、アプリケーション31乃至33も図示してある。   FIG. 6 shows a configuration example of the PD filter 53 in which the first function as described above is mounted. In FIG. 6, applications 31 to 33 are also illustrated.

Windows(R)のNT系のOSであるOS30では、アプリケーションの実行は、プロセスと呼ばれる単位で行われる。さらに、プロセスの実行には、1以上のスレッドが割り当てられ、そのスレッドにおいて、プロセスが実行される。   In the OS 30 that is an NT-based OS of Windows®, an application is executed in units called processes. Furthermore, one or more threads are assigned to the execution of the process, and the process is executed in the thread.

図6では、アプリケーション31は、プロセス71と72の2つのプロセスから構成されている。そして、プロセス71は、2つのスレッド71Aと71Bで実行されており、プロセス72は、1つのスレッド72Aで実行されている。   In FIG. 6, the application 31 is composed of two processes 71 and 72. The process 71 is executed by two threads 71A and 71B, and the process 72 is executed by one thread 72A.

また、アプリケーション32は、1つのプロセス73で構成されており、プロセス73は、2つのスレッド73Aと73Bで実行されている。   The application 32 is composed of one process 73, and the process 73 is executed by two threads 73A and 73B.

さらに、AVアプリケーション33は、プロセス74と75の2つのプロセスから構成されている。そして、プロセス74は、2つのスレッド74Aと74Bで実行されており、プロセス75は、1つのスレッド75Aで実行されている。なお、プロセス75は、PD_API41のプロセスとなっている。   Further, the AV application 33 is composed of two processes 74 and 75. The process 74 is executed by two threads 74A and 74B, and the process 75 is executed by one thread 75A. The process 75 is a PD_API 41 process.

Win32サブシステム51に対するAPI関数の呼び出しは、スレッド単位で行うことができる。従って、図6の実施の形態では、API関数の呼び出しは、スレッド71A,71B,72A,73A,73B,74A,74B,75Aそれぞれにおいて行うことができる。   The API function call to the Win32 subsystem 51 can be performed in units of threads. Therefore, in the embodiment of FIG. 6, the API function can be called in each of the threads 71A, 71B, 72A, 73A, 73B, 74A, 74B, and 75A.

なお、スレッドからの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 threads 71A to 75A, an IRP corresponding to the API function is supplied from the NT input / output manager 52 to the PD filter 53.

PDフィルタ53では、フィルタコア53Aが、NT入出力マネージャ52からのIRPに対して、光ディスク3へのアクセスに関する特有のプライオリティ(以下、適宜、IRPプライオリティという)を設定する。   In the PD filter 53, the filter core 53A sets a specific priority (hereinafter referred to as IRP priority as appropriate) regarding access to the optical disc 3 for the IRP from the NT input / output manager 52.

即ち、Windows(R)のNT系のOSであるOS30は、プロセス、さらにはスレッドにプライオリティを設定し、そのプライオリティにしたがって、プロセスまたはスレッドを処理する、いわば標準的なプライオリティ機能を有する。この標準的なプライオリティ機能によれば、例えば、CPU12や、RAM14、その他のPC1の資源は、OS30によって設定されたプライオリティが高いプロセスまたはスレッドに、優先的に割り当てられる。   That is, the OS 30 that is an NT-based OS of Windows® has a so-called standard priority function that sets a priority for a process and further a thread and processes the process or the thread according to the priority. According to this standard priority function, for example, the resources of the CPU 12, the RAM 14, and other PCs 1 are preferentially allocated to processes or threads having a high priority set by the OS 30.

従って、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 application 31 and the process 73 of the application 32 to the processes 74 and 75 of the AV application 33 by the standard priority function of the OS 30, for example, The application 33 can access the optical disc 3 with priority over the applications 31 and 32.

しかしながら、OS30の標準的なプライオリティ機能は、光ディスク3に対するアクセスの他、CPU12の使用や、RAM14へのアクセスなども影響を与える。   However, the standard priority function of the OS 30 affects not only access to the optical disc 3 but also the use of the CPU 12 and access to the RAM 14.

従って、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 OS 30, the process of an important service provided by the OS 30 waits for a long time to use the CPU 12 and the RAM 14. May be. As a result, the service is equivalent to being stopped. In the worst case, for example, the PC 1 is hung up.

そこで、PDフィルタ53では、フィルタコア53Aが、NT入出力マネージャ52からのIRPに対して、標準的なプライオリティ機能によるプライオリティとは独立した(関係のない)IRPプライオリティを設定する。   Therefore, in the PD filter 53, the filter core 53A sets an IRP priority independent of (not related to) the priority by the standard priority function for the IRP from the NT input / output manager 52.

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 OS 30 are restricted by the IRP priority. However, the use of the CPU 12 and RAM 14 is not limited. For this reason, according to the IRP priority, it is possible to prevent the important service provided by the OS 30 from being stopped and the PC 1 from being hung up.

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 / output manager 52, the filter core 53A of the PD filter 53 supplies the IRP to the queue 81A or 81B and stores it. That is, the queues 81A and 81B store the IRP with the IRP priority set supplied from the filter core 53A.

ここで、図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 queues 81A and 81B are provided as queues for the two volumes. It has been. The PD filter 53 supplies the IRP for the volume corresponding to the queue 81A of the two volumes to the queue 81A, and supplies the IRP for the volume corresponding to the queue 81B to the queue 81B. Hereinafter, the queues 81A and 81B are simply referred to as the queue 81 unless there is a particular need to distinguish them.

PDフィルタ53は、キュー81に記憶されたIRPを、そのIRPに設定されたIRPプライオリティにしたがって処理する。即ち、PDフィルタ53は、IRPプライオリティのより高いIRPを、キュー81から優先的に読み出し、NT入出力マネージャ52を介して、下位のレイヤのPD_FS54に供給する。   The PD filter 53 processes the IRP stored in the queue 81 according to the IRP priority set in the IRP. That is, the PD filter 53 preferentially reads an IRP having a higher IRP priority from the queue 81 and supplies it to the PD_FS 54 of the lower layer via the NT input / output manager 52.

なお、PDフィルタ53が、以上のような第1の機能(後述する第2および第3の機能についても同様)の処理を行うためのスレッドは、PDフィルタ53のレイヤであるファイルシステムフィルタドライバのレイヤで作成する。IRPを記憶させるキュー81も、ファイルシステムフィルタドライバのレイヤで作成する。 Note that the thread for the PD filter 53 to perform the processing of the first function as described above (the same applies to the second and third functions described later) is the file system filter driver layer that is the PD filter 53 layer. Create with layers. A queue 81 for storing the IRP is also created in the file system filter driver layer.

PDフィルタ53は、第1の機能により、AVアプリケーション33からのIRPを、アプリケーション31および32からのIRPよりも優先的に処理するために、例えば、自身に登録されたプロセスID(ProcessID)のIRPには、最大のIRPプライオリティ(IRPプライオリティがとりうる値の最大値)を設定し、登録されていないプロセスIDのIRPには、最小のIRPプライオリティ(IRPプライオリティがとりうる値の最小値)を設定する。   The PD filter 53 uses the first function to preferentially process the IRP from the AV application 33 over the IRP from the applications 31 and 32, for example, an IRP of a process ID (ProcessID) registered in itself. Sets the maximum IRP priority (the maximum value that the IRP priority can take), and sets the minimum IRP priority (the minimum value that the IRP priority can take) for an IRP with an unregistered process ID To do.

即ち、OS30は、プロセスに対してユニークなプロセスIDを付して、各プロセスを管理するようになっており、各プロセスからのIRP(各プロセスが呼び出したAPI関数に対応するIRP)は、そのプロセスのプロセスIDを有している。そして、PDフィルタ53は、NT入出力マネージャ52から受信したあるプロセスからのIRPが有するプロセスIDが、自身に登録されたプロセスIDに一致する場合には、そのIRPに対して、最大のIRPプライオリティを設定し、一致しない場合(プロセスIDが登録されていない場合も含む)には、そのIRPに対して、最小のIRPプライオリティを設定する。   That is, the OS 30 assigns a unique process ID to the process and manages each process, and the IRP from each process (the IRP corresponding to the API function called by each process) is Has the process ID of the process. When the process ID of the IRP from a certain process received from the NT input / output manager 52 matches the process ID registered in the PD filter 53, the PD filter 53 gives the maximum IRP priority to the IRP. If there is no match (including the case where the process ID is not registered), the minimum IRP priority is set for the IRP.

ここで、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_API 41 used (loaded) by the AV application 33 uses the API function DeviceIoControl () provided by the Win32 subsystem 51 at the time of loading in order to use the first function of the PD filter 53. Of the processes 74 and 75 of the AV application 33, registration of the process ID of the process 75 that loads itself is requested. That is, when the AV application 33 is activated and loaded by the process 75 of the AV application 33, the PD_API 41 requests an API function DeviceIoControl () that requests the PD filter 53 to register the process ID assigned to the process 75. ).

また、PD_API41は、自身をロードしたプロセス75の終了時に、そのプロセス75に割り当てられたプロセスIDの削除(登録されたプロセスIDの削除)を、PDフィルタ53に対して要求するAPI関数DeviceIoControl()を呼び出す。   In addition, the PD_API 41 requests the PD filter 53 to delete the process ID assigned to the process 75 (deletion of the registered process ID) when the process 75 loaded with the PD_API 41 ends. Call.

従って、PD_API41のプロセス75が存在する限りは、PDフィルタ53において、そのプロセス75からのIRP(プロセス75(PD_API41)が呼び出したWin32サブシステム51が提供するAPI関数に対応するIRP)に対しては、最大のIRPプライオリティが設定される。   Therefore, as long as the process 75 of the PD_API 41 exists, the PD filter 53 does not handle the IRP from the process 75 (the IRP corresponding to the API function provided by the Win32 subsystem 51 called by the process 75 (PD_API 41)). The maximum IRP priority is set.

次に、図7は、PDフィルタ53が第1の機能の処理を行うときに、PD_API41が、PDフィルタ53を制御するために、AVアプリケーション33に提供する制御用(PDフィルタ53の制御用)のAPI(関数)を示している。   Next, FIG. 7 illustrates the control provided by the PD_API 41 to the AV application 33 for controlling the PD filter 53 when the PD filter 53 performs the processing of the first function (for controlling the PD filter 53). API (function) is shown.

図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 AV application 33 in order for the PD_API 41 to control the PD filter 53.

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 PD filter 53 for the process of the process ID specified by the argument is set in the argument. return. Furthermore, the API function PdGetPriority () returns 1 as the return value when the IRP priority set by the PD filter 53 for the process with the process ID specified by the argument is successful, and the return value when it fails. Returns 0 as.

従って、API関数PdGetPriority()によれば、任意のプロセスからのIRPに対して、PDフィルタ53が設定するIRPプライオリティを認識することができる。   Therefore, according to the API function PdGetPriority (), the IRP priority set by the PD filter 53 can be recognized for the IRP from any process.

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 PD filter 53 for the process of the process ID specified by the argument is specified by the argument. Change to IRP priority. Further, the API function PdSetPriority () returns 1 as a return value when the IRP priority set by the PD filter 53 is successfully changed, and returns 0 as a return value when the change is unsuccessful.

従って、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 filter 53 with respect to the IRP from the process ID that matches the process ID registered in the PD filter 53 or the process ID that does not match. The priority can be changed.

PD_API41は、API関数PdGetPriority()が呼び出されると、PDフィルタ53で設定されるIRPプライオリティを、PDフィルタ53に対して要求するAPI関数DeviceIoControl()を呼び出す。   When the API function PdGetPriority () is called, the PD_API 41 calls an API function DeviceIoControl () that requests the PD filter 53 for the IRP priority set by the PD filter 53.

また、PD_API41は、API関数PdSetPriority()が呼び出されると、PDフィルタ53で設定されるIRPプライオリティの変更を、PDフィルタ53に対して要求するAPI関数DeviceIoControl()を呼び出す。   When the API function PdSetPriority () is called, the PD_API 41 calls an API function DeviceIoControl () that requests the PD filter 53 to change the IRP priority set by the PD filter 53.

以上のように、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 PD_API 41 uses the API function DeviceIoControl () for requesting registration of the process ID, the API function DeviceIoControl () for requesting deletion of the process ID, in order to use the first function of the PD filter 53. Calls an API function DeviceIoControl () that requests the IRP priority set by the PD filter 53 and an API function DeviceIoControl () that requests a change in the IRP priority set by the PD filter 53 as necessary.

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 Win32 subsystem 51 makes a request according to the API function DeviceIoControl () to the NT I / O manager 52, and the NT I / O manager 52 sends the request to the IRP_MJ_DEVICE_CONTROL. And is supplied to the PD filter 53.

この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 PD filter 53 performs the process of the first function.

図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 PD filter 53. IOCTL to do.

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 PD filter 53. The requested IOCTL.

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 PD filter 53, and requests the change of the IRP priority set in the PD filter 53 Requests that the IRP priority set in the IRP of the process ID that is an argument of the API function PdSetPriority () in FIG. 7 corresponding to the API function DeviceIoControl () is also changed to the IRP priority that is the argument. IOCTL.

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 PD filter 53, and an API function DeviceIoControl (that requests the IRP priority set by the PD filter 53 ) Corresponding to the API function PdGetPriority () in FIG. 7 is an IOCTL that requests the IRP priority set in the IRP of the process ID.

なお、上述したような、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 Win32 subsystem 51 to the NT I / O manager 52 using the API function DeviceIoControl () provided by the Win32 subsystem 51. In the NT input / output manager 52, the IRP_MJ_DEVICE_CONTROL IRP subcode is designated.

次に、図9のフローチャートを参照して、PDフィルタ53が第1の機能を実装している場合の、図6におけるAVアプリケーション33、PD_API41、およびPDフィルタ53の処理の概要について説明する。   Next, an overview of the processing of the AV application 33, the PD_API 41, and the PD filter 53 in FIG. 6 when the PD filter 53 has the first function will be described with reference to the flowchart in FIG.

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 AV application 33 is activated, the AV application 33 loads the PD_API 41 by the process 75 of the processes 74 and 75 of the AV application 33 in step S21. When the PD_API 41 is loaded by the process 75, in step S31, the API function DeviceIoControl () that requests registration of the process ID of the process 75 that loaded the PD_API 41 is called, and by calling this API function DeviceIoControl (), An IRP of IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_SET_PROCESSID that requests registration of a process ID is specified as IOCTL is supplied from the NT input / output manager 52 to the PD filter 53.

PDフィルタ53は、ステップS41において、NT入出力マネージャ52からのIRPを受信し、そのIRPのIOCTL_PD_SET_PROCESSIDにしたがい、PD_API41のプロセス75のプロセスIDを登録する。   In step S41, the PD filter 53 receives the IRP from the NT input / output manager 52, and registers the process ID of the process 75 of the PD_API 41 in accordance with IOCTL_PD_SET_PROCESSID of the IRP.

従って、この後は、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 PD_API 41 is deleted in the PD filter 53, the maximum IRP priority is set for the IRP from the process 75, and the minimum is set for the IRP from other processes. IRP priority is set. Thereby, in the PD filter 53, the IRP from the process 75 of the PD_API 41 is preferentially processed (with the highest priority).

即ち、例えば、AVアプリケーション33が、ステップS22において、光ディスク3に対するアクセス要求としての、例えば、ファイルの読み出しを要求するAPI関数ReadFile()などを呼び出すと、PD_API41は、ステップS32において、そのAPI関数ReadFile()の呼び出しを受信し、ステップS33に進む。   That is, for example, when the AV application 33 calls an API function ReadFile () that requests reading of a file, for example, as an access request to the optical disc 3 in step S22, the PD_API 41 reads the API function ReadFile in step S32. The call of () is received, and the process proceeds to step S33.

ステップ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_API 41 calls the same API function ReadFile () (API function ReadFile () provided by the Win32 subsystem 51) in response to a call to the API function ReadFile () from the AV application 33. The IRP of IRP_MJ_READ requesting reading of the file is supplied from the NT input / output manager 52 to the PD filter 53.

PDフィルタ53は、ステップS42において、NT入出力マネージャ52からのIRP_MJ_READのIRPを受信し、そのIRP_MJ_READのIRPに対して、IRPプライオリティを設定する。   In step S42, the PD filter 53 receives the IRP_MJ_READ IRP from the NT input / output manager 52 and sets the IRP priority for the IRP_MJ_READ IRP.

即ち、いまの場合、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 filter 53 is from the PD_API 41 (process 75). In step S 41, the process ID of the process 75 of PD_API 41 is registered in the PD filter 53. Therefore, the maximum IRP priority is set to the IRP of IRP_MJ_READ received by the PD filter 53 from the process 75 of the PD_API 41 in step S42.

その結果、PDフィルタ53では、PD_API41のプロセス75からのIRP_MJ_READのIRPが、他に、最大のIRPプライオリティが設定されているIRPが存在しない限り、即座に処理される。   As a result, in the PD filter 53, the IRP_MJ_READ IRP from the process 75 of the PD_API 41 is immediately processed unless there is an IRP for which the maximum IRP priority is set.

即ち、PDフィルタ53では、ステップS43において、PD_API41のプロセス75からのIRP_MJ_READのIRPが、優先的に、PD_FS54に供給される。   That is, in step S43, the PD filter 53 preferentially supplies the IRP_MJ_READ IRP from the process 75 of the PD_API 41 to the PD_FS 54.

その後、AVアプリケーション33が、例えば終了等されると、ステップS23において、AVアプリケーション33は、PD_API41(のプロセス75)に対してアンロードを要求する。   Thereafter, when the AV application 33 is terminated, for example, in step S23, the AV application 33 requests the PD_API 41 (the process 75) to unload.

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_API 41 calls an API function DeviceIoControl () for requesting deletion of the process ID of its own process 75 in step S34, and by calling this API function DeviceIoControl (), the process ID of the process 75 is called. An IRP of IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_DELETE_PROCESSID for requesting deletion is specified as IOCTL is supplied from the NT input / output manager 52 to the PD filter 53.

PDフィルタ53は、ステップS44において、NT入出力マネージャ52からのIRPを受信し、そのIRPのIOCTL_PD_DELETE_PROCESSIDにしたがい、PD_API41のプロセス75のプロセスIDを削除する。   In step S44, the PD filter 53 receives the IRP from the NT input / output manager 52, and deletes the process ID of the process 75 of the PD_API 41 in accordance with IOCTL_PD_DELETE_PROCESSID of the IRP.

従って、この後は、PDフィルタ53において、IRPは、OS30の標準的なプライオリティ機能によって設定されるプライオリティにしたがって処理される。   Therefore, thereafter, in the PD filter 53, the IRP is processed according to the priority set by the standard priority function of the OS 30.

次に、図10および図11のフローチャートを参照して、図6のPDフィルタ53による第1の機能の処理について説明する。   Next, processing of the first function by the PD filter 53 of FIG. 6 will be described with reference to the flowcharts of FIGS. 10 and 11.

まず、図10のフローチャートを参照して、第1の機能を実装する図6のPDフィルタ53において、IRPが受信されてから、そのIRPがキュー81に記憶されるまでの処理(キュー81への入力処理)について説明する。   First, referring to the flowchart of FIG. 10, the PD filter 53 of FIG. 6 that implements the first function performs processing from when an IRP is received until the IRP is stored in the queue 81 (to the queue 81). Input processing) will be described.

アプリケーション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 applications 31 to 33 (any one of the processes 71 to 75 in FIG. 6). Is called, the NT input / output manager 52 supplies an IRP corresponding to the API function to the PD filter 53 in response to the API function call (the request output by the Win32 subsystem 51).

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 PD filter 53, in step S51, the filter core 53A receives the IRP from the process that called the API function (the IRP supplied from the NT input / output manager 52 in response to the API function call by the process), and In step S52, it is determined whether or not the IRP is an IRP (IRP of IRP_MJ_DEVICE_CONTROL) in which IOCTL_PD_SET_PROCESSID (FIG. 8) is designated as IOCTL.

ステップ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 filter core 53A in step S51) is an IRP for which IOCTL_PD_SET_PROCESSID is specified, the process proceeds to step S53, and the filter core 53A determines that the IRP The included process ID, that is, the process ID of the process that called the API function corresponding to the IRP is registered (stored), and the process returns to step S51.

即ち、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 filter core 53A registers the process ID. Here, the process ID registered in the filter core 53A is hereinafter referred to as a registered process ID as appropriate.

一方、ステップ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 filter core 53A designates IOCTL_PD_DELETE_PROCESSID (FIG. 8) as the IOCTL. It is determined whether it is an IRP (IRP of IRP_MJ_DEVICE_CONTROL).

ステップ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 filter core 53A deletes (deletes) the registered process ID, and the process returns to step S51.

また、ステップ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 filter core 53A requests that the IRP request access to the optical disc 3. Determine if it is an IRP.

ステップ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 PD filter 53, for example. IOCTL_PD_SET_RRIORITY (FIG. 8) If IRP_MJ_DEVICE_CONTROL IRP specified as IOCTL or IOCTL_PD_GET_RRIORITY (FIG. 8) for requesting the IRP priority set by the PD filter 53 is IRP_MJ_DEVICE_CONTROL IRP specified as IOCTL, etc., proceed to step S57. The filter core 53A performs processing according to the IRP, and returns a response corresponding to the processing result to the process that called the API function corresponding to the IRP via the NT input / output manager 52 and the Win32 subsystem 51. Return to step S51.

ここで、ステップ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 filter core 53A sets the IRP from the process with the process ID specified by the IOCTL_PD_SET_RRIORITY. A process of changing the IRP priority to be set to the IRP priority specified in IOCTL_PD_SET_RRIORITY is performed. In step S57, for example, when the IRP from the process is an IRP for which IOCTL_PD_GET_RRIORITY (FIG. 8) is specified, the filter core 53A sets the IRP from the process having the process ID specified by the IOCTL_PD_GET_RRIORITY. The IRP priority to be returned is returned as a response.

一方、ステップ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 filter core 53A sets the process ID included in the IRP from the process, that is, the process ID of the process that called the API function corresponding to the IRP, as the registered process ID. Determine whether they match.

ステップ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 filter core 53A determines the minimum IRP priority ( Set (set) the minimum value of possible values of the IRP priority, and proceed to step S61.

また、ステップ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 filter core 53A determines the maximum IRP priority for the IRP from the process. (The maximum value of the possible values of the IRP priority) is set, and the process proceeds to step S61.

ステップS61では、フィルタコア53Aは、ステップS59またはS60でIRPプライオリティを設定した、プロセスからのIRPを、キュー81へ出力して記憶させ(キューイングし)、次のIRPが供給されるのを待って、ステップS51に戻る。   In step S61, the filter core 53A outputs the IRP from the process in which the IRP priority is set in step S59 or S60 to the queue 81 for storage (queuing), and waits for the next IRP to be supplied. Then, the process returns to step S51.

なお、図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 queue 81 in the PD filter 53 of FIG. To do.

PDフィルタ53では、フィルタコア53Aが、ステップS71において、キュー81に記憶されたIRPから、IRPプライオリティが最も高い(最も大きい)ものを検索し、ステップS72に進む。   In the PD filter 53, the filter core 53A searches the IRP stored in the queue 81 for the one with the highest (highest) IRP priority in step S71, and proceeds to step S72.

ステップS72では、フィルタコア53Aは、ステップS71の検索によって得られたIRPプライオリティが最も高いIRPを処理し、ステップS71に戻る。即ち、ステップS72では、フィルタコア53Aは、IRPプライオリティが最も高いIRPを、優先的に、キュー81から読み出し、NT入出力マネージャ52を介して、PD_FS54に出力する。   In step S72, the filter core 53A processes the IRP having the highest IRP priority obtained by the search in step S71, and returns to step S71. That is, in step S 72, the filter core 53 A preferentially reads the IRP having the highest IRP priority from the queue 81 and outputs it to the PD_FS 54 via the NT input / output manager 52.

なお、ステップ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 filter core 53A uses the standard priority function of the OS 30 or the IRP as a queue. The process is performed according to the storage time stored in 81. That is, the filter core 53A preferentially reads from the queue 81 and outputs to the PD_FS 54, for example, from an IRP from a process with a high priority by a standard priority function or an IRP with a fast storage time.

以上のように、PDフィルタ53では、IRPに対して、OS30の標準的なプライオリティ機能によるプライオリティとは別のIRPプライオリティを設定する。具体的には、登録プロセスIDと一致するプロセスIDのプロセスからのIRPには、最大のIRPプライオリティを設定し、登録プロセスIDと一致しないプロセスIDのプロセスからのIRPには、最小のIRPプライオリティを設定する。   As described above, the PD filter 53 sets an IRP priority different from the priority by the standard priority function of the OS 30 for the IRP. Specifically, the maximum IRP priority is set for the IRP from the process with the process ID that matches the registration process ID, and the minimum IRP priority is set for the IRP from the process with a process ID that does not match the registration process ID. Set.

そして、PDフィルタ53は、IRPプライオリティが設定されたIRPを、キュー81に記憶させ、さらに、キュー81に記憶されたIRPを、IRPプライオリティにしたがって処理する。   Then, the PD filter 53 stores the IRP for which the IRP priority is set in the queue 81, and further processes the IRP stored in the queue 81 according to the IRP priority.

一方、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 PD_APL 41 is loaded by the process 75, the PD_APL 41 requests the PD filter 53 to register the process ID of the process 75, and the PD filter 53 responds to the request. In response, the process ID of the process 75 of PD_APL 41 is registered.

そして、AVアプリケーション33は、PD_APL41のプロセス75から、光ディスク3へのアクセス要求を行う。   Then, the AV application 33 makes an access request to the optical disc 3 from the process 75 of the PD_APL 41.

従って、PDフィルタ53では、AVアプリケーション33による光ディスク3へのアクセス要求としてのIRPが、他のアプリケーション31や32(のプロセス)からのIRPよりも優先的に処理されるので、アプリケーション31や32からのIRPの処理を待つことや、そのIRPの処理によって生じるドライブ2のシーク等によって、AVアプリケーション33による光ディスク3に対するデータの読み書きが妨げられることを防止(低減)することができる。これにより、AVアプリケーション33において、AVデータを、リアルタイムで光ディスク3に記録し、また再生することができる。   Therefore, in the PD filter 53, the IRP as the access request to the optical disc 3 by the AV application 33 is processed with priority over the IRP from the other applications 31 and 32 (process thereof). It is possible to prevent (reduce) the reading / writing of data from / to the optical disc 3 by the AV application 33 due to waiting for the IRP processing or seeking of the drive 2 generated by the IRP processing. Thereby, the AV application 33 can record and reproduce the AV data on the optical disc 3 in real time.

なお、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 AV application 33 is recording and reproducing the AV data, the AV application 33 can record the AV data on the optical disc 3. The IRP as an access request may be processed with priority.

一方、上述の実施の形態では、図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 AV application 33 is preferentially processed in the PD filter 53 only while the PD_APL 41 is loaded. Is done.

従って、PD_APL41は、図9で説明したように、AVアプリケーション33の起動時にロードし、その終了時にアンロードする他、例えば、AVアプリケーション33において、AVデータの記録または再生が行われるときにロードし、その記録または再生が停止されたときにアンロードするようにしても良い。   Therefore, as described in FIG. 9, the PD_APL 41 is loaded when the AV application 33 is started and unloaded when the AV application 33 is ended. For example, the PD_APL 41 is loaded when AV data is recorded or reproduced in the AV application 33. Alternatively, unloading may be performed when the recording or reproduction is stopped.

次に、AVデータをリアルタイムで読み書きすることを保証するためのPDフィルタ53の第2の機能について説明する。   Next, the second function of the PD filter 53 for ensuring that AV data is read and written in real time will be described.

即ち、第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 PD filter 53 sets a pause flag (permission information) indicating permission or non-permission of IRP processing corresponding to an access request to the optical disc 3 from the applications 31 to 33. The IRPs from the applications 31 to 33 are stored in the queue 81. Then, the PD filter 53 processes the IRP stored in the queue 81 according to the pause flag. Thereby, for example, the PD filter 53 stops IRP processing from applications other than the AV application 33, and processes only IRP from the AV application 33 (IRP corresponding to the access request from the AV application 33). The AV data is guaranteed to be read and written by the AV application 33 in real time.

即ち、第2の機能を実装したPDフィルタ53は、ポーズフラグによって、特定のIRPのみを処理して、他のIRPの処理を停止する状態であるポーズ(Pause)状態と、すべてのIRPを処理する状態であるラン(Run)状態とのうちのいずれか一方の状態となる。   That is, the PD filter 53 that implements the second function processes only a specific IRP according to the pause flag, and processes all IRPs in a pause state in which other IRP processes are stopped. One of a run state and a run state.

以上のような第2の機能を実装したPDフィルタ53は、例えば、図6に示したように構成される。   The PD filter 53 mounted with the second function as described above is configured, for example, as shown in FIG.

但し、第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 filter core 53A in addition to the process ID registration and the IRP priority setting for the IRP. Further, in the PD filter 53 in which the second function is implemented, the IRP stored in the queue 81 is processed according to the pause flag in addition to the IRP priority in the filter core 53A.

AVアプリケーション33で利用されるPD_API41は、PDフィルタ53の第2の機能を利用するために、PDフィルタ53の状態をポーズ状態またはラン状態にする、PDフィルタ53の制御用のAPI(関数)を、AVアプリケーション33に提供する。   In order to use the second function of the PD filter 53, the PD_API 41 used in the AV application 33 has an API (function) for controlling the PD filter 53 that sets the state of the PD filter 53 to a pause state or a run state. , Provided to the AV application 33.

図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 PD_API 41 to the AV application 33 in order to control the PD filter 53 when the PD filter 53 performs the processing of the second function. Is shown.

なお、図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 PD filter 53 described so far.

図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 AV application 33 in order for the PD_API 41 to control the PD filter 53.

API関数PdPauseOtherAppIrp()によれば、PDフィルタ53が、特定のIRPのみを処理し、他のIRPの処理を停止するポーズ状態となる。一方、API関数PdRunOtherAppIrp()によれば、PDフィルタ53が、すべてのIRPを処理するラン状態となる。   According to the API function PdPauseOtherAppIrp (), the PD filter 53 is in a pause state in which only a specific IRP is processed and the processing of the other IRP is stopped. On the other hand, according to the API function PdRunOtherAppIrp (), the PD filter 53 enters a run state in which all IRPs are processed.

なお、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 PD filter 53 includes the IRP corresponding to the access request for the volume specified by the volume name specified by the argument. In this state, only a specific IRP is processed and other IRP processes are stopped.

また、API関数PdRunOtherAppIrp()が、引数のボリュームネームを指定して呼び出されることにより、PDフィルタ53は、その引数で指定されているボリュームネームによって特定されるボリュームに対するアクセス要求に対応するIRPをすべて処理する(処理対象とする)ラン状態となる。   In addition, when the API function PdRunOtherAppIrp () is called by specifying the volume name of the argument, the PD filter 53 selects all IRPs corresponding to the access request for the volume specified by the volume name specified by the argument. A run state to be processed (to be processed) is set.

従って、PDフィルタ53をポーズ状態またはラン状態とすることは、ボリュームごとに、即ち、ボリュームに対応するキューごとに行うことができる。例えば、図6のPDフィルタ53においては、キュー81Aと81Bそれぞれについて独立に、ポーズ状態またはラン状態を設定することができる。   Accordingly, the PD filter 53 can be set to the pause state or the run state for each volume, that is, for each queue corresponding to the volume. For example, in the PD filter 53 of FIG. 6, a pause state or a run state can be set independently for each of the queues 81A and 81B.

但し、以下では、説明を簡単にするために、キュー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 queues 81A and 81B.

なお、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 filter 53 is successfully put into a pause state, and returns 0 as a return value when it fails. Similarly, the API function PdRunOtherAppIrp () also returns 1 as a return value when the PD filter 53 is successfully set to the run state, and returns 0 as a return value when it fails.

PD_API41は、API関数PdPauseOtherAppIrp()が呼び出されると、ポーズ状態となることを、PDフィルタ53に対して要求するAPI関数DeviceIoControl()を呼び出す。   When the API function PdPauseOtherAppIrp () is called, the PD_API 41 calls an API function DeviceIoControl () that requests the PD filter 53 to be in a pause state.

また、PD_API41は、API関数PdRunOtherAppIrp()が呼び出されると、ラン状態となることを、PDフィルタ53に対して要求するAPI関数DeviceIoControl()を呼び出す。   In addition, when the API function PdRunOtherAppIrp () is called, the PD_API 41 calls an API function DeviceIoControl () that requests the PD filter 53 to enter a run state.

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 Win32 subsystem 51 makes a request according to the API function DeviceIoControl () to the NT I / O manager 52, and the NT I / O manager 52 sends the request to the IRP_MJ_DEVICE_CONTROL. And is supplied to the PD filter 53.

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 PD filter 53 performs the process of the second function.

なお、図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 PD filter 53 be in a pause state. is there.

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 PD filter 53 be in the run state.

なお、上述したように、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 Win32 subsystem 51 to the NT I / O manager 52 using the API function DeviceIoControl () provided by the Win32 subsystem 51. In the NT input / output manager 52, the IRP_MJ_DEVICE_CONTROL IRP subcode is designated.

次に、図14のフローチャートを参照して、PDフィルタ53が第2の機能を実装している場合の、図6におけるAVアプリケーション33、PD_API41、およびPDフィルタ53の処理の概要について説明する。   Next, an overview of processing of the AV application 33, the PD_API 41, and the PD filter 53 in FIG. 6 when the PD filter 53 has the second function will be described with reference to the flowchart in FIG.

AVアプリケーション33は、例えば、ユーザが入力部17(図2)を操作することによって、光ディスク3に記録されたAVデータの再生や、光ディスク3へのAVデータの記録などが要求されると、ステップS91において、API関数PdPauseOtherAppIrp()を呼び出す。   When the AV application 33 is requested to reproduce AV data recorded on the optical disc 3 or record AV data on the optical disc 3, for example, when the user operates the input unit 17 (FIG. 2), the step is performed. In S91, the API function PdPauseOtherAppIrp () is called.

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_API 41 receives a call to the API function PdPauseOtherAppIrp () by the AV application 33, proceeds to step S102, and requests an API function that requests a pause state in response to the call to the API function PdPauseOtherAppIrp (). Call DeviceIoControl (). By calling this API function DeviceIoControl (), an IRP of IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_PAUSE_OTHERAPPIRP for requesting a pause state is specified as IOCTL is supplied from the NT input / output manager 52 to the PD filter 53.

PDフィルタ53は、ステップS111において、NT入出力マネージャ52からのIRPを受信し、そのIRPのIOCTL_PD_PAUSE_OTHERAPPIRPにしたがい、ポーズフラグを、ポーズ状態を表す、例えば、1にセットし、これにより、ポーズ状態となる。   In step S111, the PD filter 53 receives the IRP from the NT input / output manager 52, and sets the pause flag representing the pause state, for example, 1 according to the IOCTL_PD_PAUSE_OTHERAPPIRP of the IRP. Become.

PDフィルタ53は、ポーズ状態となっている間、PD_API41のプロセス75(図6)以外のプロセスからのIRPの処理を停止し、PD_API41のプロセス75からのIRPのみを処理する。   While in the pause state, the PD filter 53 stops IRP processing from processes other than the PD_API 41 process 75 (FIG. 6), and processes only IRP from the PD_API 41 process 75.

即ち、例えば、AVアプリケーション33が、ステップS92において、光ディスク3に対するアクセス要求としての、例えば、ファイルの読み出しを要求するAPI関数ReadFile()などを呼び出すと、PD_API41は、ステップS103において、そのAPI関数ReadFile()の呼び出しを受信し、ステップS104に進む。   That is, for example, when the AV application 33 calls an API function ReadFile () for requesting reading of a file, for example, as an access request to the optical disc 3 in step S92, the PD_API 41 reads the API function ReadFile in step S103. The call of () is received, and the process proceeds to step S104.

ステップS104では、PD_API41は、AVアプリケーション33からのAPI関数ReadFile()の呼び出しに応じて、同一のAPI関数ReadFile()を呼び出し、この呼び出しによって、ファイルの読み出しを要求するIRP_MJ_READのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。   In step S104, the PD_API 41 calls the same API function ReadFile () in response to a call to the API function ReadFile () from the AV application 33, and the IRP of IRP_MJ_READ that requests reading of the file is input to the NT by this call. It is supplied from the output manager 52 to the PD filter 53.

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 filter 53 receives the IRP_MJ_READ IRP from the NT input / output manager 52, and proceeds to step S113. In step S113, the PD filter 53 stores the IRP received in step S112, that is, the IRP from the process 75 of the PD_API 41 in the AV application 33, in the queue 81 (FIG. 6), and further reads out from the queue 81 to the PD_FS 54. Supply.

以上のように、PDフィルタ53では、AVアプリケーション33のプロセス75からのIRPは、即座に処理される。   As described above, in the PD filter 53, the IRP from the process 75 of the AV application 33 is immediately processed.

一方、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 applications 31 and 32 other than the AV application 33 call, for example, an API function ReadFile () for requesting reading of a file as an access request to the optical disc 3 in steps S81 to S83, respectively. By this call, the IRP_MJ_READ IRP requesting the file reading is supplied from the NT input / output manager 52 to the PD filter 53.

PDフィルタ53は、ステップS114乃至S116において、それぞれ、プロセス71乃至73がステップS81乃至S83で行ったAPI関数ReadFile()の呼び出しに対応するIRPを受信し、キュー81に記憶させる。   In steps S114 to S116, the PD filter 53 receives an IRP corresponding to the API function ReadFile () call performed by the processes 71 to 73 in steps S81 to S83, and stores the IRP in the queue 81.

そして、いまの場合、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 PD filter 53 is in a paused state, the PD filter 53 is a process other than the IRP stored in the queue 81 in steps S114 to S116, that is, a process other than the process 75 of the AV application 33. IRPs from 71 to 73 are not processed. That is, in the PD filter 53, the IRPs from the processes 71 and 72 of the application 31 and the process 73 of the application 32 are not supplied to the PD_FS 54 but are stored in the queue 81.

その後、例えば、ユーザが入力部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 AV application 33, the AV application 33 is requested. Calls the API function PdRunOtherAppIrp () in step S93.

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_API 41 receives a call to the API function PdRunOtherAppIrp () by the AV application 33, and proceeds to step S106. In response to the call to the API function PdRunOtherAppIrp (), the PD_API 41 requests to enter the run state. Call DeviceIoControl (). By calling this API function DeviceIoControl (), an IRP of IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_RUN_OTHERAPPIRP for requesting a run state is specified as IOCTL is supplied from the NT input / output manager 52 to the PD filter 53.

PDフィルタ53は、ステップS117において、NT入出力マネージャ52からのIRPを受信し、そのIRPのIOCTL_PD_RUN_OTHERAPPIRPにしたがい、ポーズフラグを、ラン状態を表す、例えば、0にリセットし、これにより、ラン状態となる。   In step S117, the PD filter 53 receives the IRP from the NT input / output manager 52, and in accordance with the IOCTL_PD_RUN_OTHERAPPIRP of the IRP, resets the pause flag to represent a run state, for example, 0, thereby Become.

PDフィルタ53は、ラン状態となると、PD_API41のプロセス75(図6)以外のプロセスからのIRPの処理を開始(再開)する。   When the PD filter 53 enters the run state, it starts (restarts) IRP processing from processes other than the PD_API 41 process 75 (FIG. 6).

即ち、いまの場合、PDフィルタ53では、ステップS114乃至S116で受信したプロセス71乃至73それぞれからのIRPが、処理されずにキュー81に記憶されたままとなっている。   In other words, in this case, in the PD filter 53, the IRPs from the processes 71 to 73 received in steps S114 to S116 are stored in the queue 81 without being processed.

そこで、PDフィルタ53は、ステップS118乃至S120において、それぞれ、キュー81に記憶されたままとなっていたプロセス71乃至73からのIRPを、キュー81から読み出し、PD_FS54に供給する。   Therefore, the PD filter 53 reads the IRPs from the processes 71 to 73 that have been stored in the queue 81 in steps S118 to S120, respectively, and supplies them to the PD_FS 54.

そして、その後、AVアプリケーション33以外のアプリケーション31や32のプロセス71乃至73のうちのいずれかが、ステップS84において、光ディスク3に対するアクセス要求としての、例えば、ファイルの読み出しを要求するAPI関数ReadFile()などを呼び出すと、この呼び出しによって、ファイルの読み出しを要求するIRP_MJ_READのIRPが、NT入出力マネージャ52からPDフィルタ53に供給される。   Then, after that, any of the processes 31 to 73 of the application 31 and 32 other than the AV application 33, for example, an API function ReadFile () that requests reading of a file as an access request to the optical disc 3 in step S84. When this is called, an IRP of IRP_MJ_READ requesting reading of the file is supplied from the NT input / output manager 52 to the PD filter 53 by this call.

PDフィルタ53は、ステップS121において、プロセス71乃至73のうちのいずれかがステップS84で行ったAPI関数ReadFile()の呼び出しに対応するIRPを受信し、キュー81に記憶させる。   In step S121, the PD filter 53 receives the IRP corresponding to the call of the API function ReadFile () performed by any of the processes 71 to 73 in step S84, and stores it in the queue 81.

そして、いまの場合、PDフィルタ53はラン状態になっているので、PDフィルタ53では、ステップS121でキュー81に記憶されたIRPが、ステップS122において読み出され、PD_FS54に供給される。   In this case, since the PD filter 53 is in the run state, the IRP stored in the queue 81 in step S121 is read in step S122 and supplied to the PD_FS 54 in the PD filter 53.

以上のように、PDフィルタ53は、ポーズ状態では、AVアプリケーション33からのIRPのみを、PD_FS54に出力する。そして、PDフィルタ53は、ポーズ状態が解除されると、即ち、ラン状態となると、AVアプリケーション33以外のアプリケーションからのIRPも、PD_FS54に出力する。   As described above, the PD filter 53 outputs only the IRP from the AV application 33 to the PD_FS 54 in the pause state. When the pause state is canceled, that is, when the PD filter 53 enters the run state, the IRP from an application other than the AV application 33 is also output to the PD_FS 54.

次に、図15および図16のフローチャートを参照して、図6のPDフィルタ53による第2の機能の処理について説明する。   Next, processing of the second function by the PD filter 53 of FIG. 6 will be described with reference to the flowcharts of FIGS. 15 and 16.

まず、図15のフローチャートを参照して、第2の機能を実装する図6のPDフィルタ53において、IRPが受信されてから、そのIRPがキュー81に記憶されるまでの処理(キュー81への入力処理)について説明する。   First, referring to the flowchart of FIG. 15, the PD filter 53 of FIG. 6 that implements the second function performs processing from when an IRP is received until the IRP is stored in the queue 81 (to the queue 81). Input processing) will be described.

図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 applications 31 to 33 (any one of the processes 71 to 75 in FIG. 6). When the API function is called, the NT input / output manager 52 supplies the IRP corresponding to the API function to the PD filter 53 in response to the call of the API function.

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 PD filter 53, in step S151, the filter core 53A receives the IRP from the process that called the API function (the IRP supplied from the NT input / output manager 52 in response to the API function call by the process), Proceeding to step S152, it is determined whether the IRP is an IRP (IRP of IRP_MJ_DEVICE_CONTROL) in which IOCTL_PD_SET_PROCESSID (FIG. 8) is designated as IOCTL.

ステップ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 filter core 53A in step S151) is the IRP for which IOCTL_PD_SET_PROCESSID is specified, the process proceeds to step S153, and the filter core 53A The included process ID, that is, the process ID of the process that called the API function corresponding to the IRP is registered (stored), the next IRP is supplied, and the process returns to step S151.

即ち、ステップ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 filter core 53A in step S151 is set as the registration process ID.

一方、ステップ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 filter core 53A specifies IOCTL_PD_DELETE_PROCESSID (FIG. 8) as the IOCTL. It is determined whether it is an IRP (IRP of IRP_MJ_DEVICE_CONTROL).

ステップ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 filter core 53A deletes (deletes) the registered process ID and supplies the next IRP. The process returns to step S151.

また、ステップ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 filter core 53A determines that the IRP from the process is IOCTL_PD_PAUSE_OTHERAPPIRP (FIG. 13). Is the specified IRP (IRP of IRP_MJ_DEVICE_CONTROL).

ステップ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 filter core 53A sets the variable pause flag to 1 representing the pause state. After waiting for the next IRP supply, the process returns to step S151. As a result, the filter core 53A (PD filter 53) is in a pause state.

また、ステップ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 filter core 53A determines that the IRP from the process is IOCTL_PD_RUN_OTHERAPPIRP (FIG. 13). Is the specified IRP (IRP of IRP_MJ_DEVICE_CONTROL).

ステップ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 filter core 53A resets the pause flag as a variable to 0 representing the run state. After waiting for the next IRP to be supplied, the process returns to step S151. As a result, the filter core 53A enters the run state.

また、ステップ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 filter core 53A requests that the IRP request access to the optical disc 3. Determine if it is an IRP.

ステップ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 PD filter 53, for example. IOCTL_PD_SET_RRIORITY (FIG. 8) If IRP_MJ_DEVICE_CONTROL IRP specified as IOCTL or IOCTL_PD_GET_RRIORITY (FIG. 8) for requesting the IRP priority set by PD filter 53 is IRP_MJ_DEVICE_CONTROL IRP specified as IOCTL, etc., proceed to step S161. The filter core 53A performs processing according to the IRP, as in step S57 of FIG. Further, the filter core 53A returns a response corresponding to the processing result to the process calling the API function corresponding to the IRP via the NT input / output manager 52 and the Win32 subsystem 51, and waits for the next IRP supply. Then, the process returns to step S151.

一方、ステップ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 filter core 53A includes the process ID included in the IRP from the process, that is, the process ID of the process that called the API function corresponding to the IRP, as the registered process ID. Determine whether they match.

ステップ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 filter core 53A sets the minimum IRP priority for the IRP from the process. Set and proceed to step S165.

また、ステップ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 filter core 53A determines the maximum IRP priority for the IRP from the process. Is set, and the process proceeds to step S165.

ステップS165では、フィルタコア53Aは、ステップS163またはS164でIRPプライオリティを設定した、プロセスからのIRPを、キュー81へ出力して記憶させ、次のIRPの供給を待って、ステップS151に戻る。   In step S165, the filter core 53A outputs and stores the IRP from the process, for which the IRP priority is set in step S163 or S164, to the queue 81, waits for the next IRP supply, and returns to step S151.

次に、図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 queue 81 in the PD filter 53 of FIG. 6 that implements the second function will be described. To do.

PDフィルタ53では、フィルタコア53Aが、ステップS171において、ポーズフラグが1にセットされているかどうかを判定する。   In the PD filter 53, the filter core 53A determines whether or not the pause flag is set to 1 in step S171.

ステップ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 PD filter 53 is in the paused state, the process proceeds to step S172, and the queue 81 has the maximum IRP priority (IRP priority). Determine whether there is an IRP for which the maximum possible value)) is set.

ステップ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 queue 81, that is, an IRP from a process having a process ID that matches the registered process ID is stored in the queue 81. In step S173, the filter core 53A processes the IRP stored in the queue 81 and having the maximum IRP priority, and returns to step S171. That is, in step S173, the filter core 53A reads the IRP for which the maximum IRP priority is set from the queue 81 and outputs it to the PD_FS 54 via the NT input / output manager 52.

また、ステップ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 queue 81, that is, the IRP from the process having the process ID that matches the registered process ID is stored in the queue 81. If not, the process skips step S173 and returns to step S171.

従って、PDフィルタ53がポーズ状態になっている場合は、登録プロセスIDと一致するプロセスIDのプロセスからのIRPが、キュー81に記憶されているかどうかにかかわらず、登録プロセスIDと一致しないプロセスIDのプロセスからのIRPは、PD_FS54に出力されない。   Therefore, when the PD filter 53 is in a paused state, a process ID that does not match the registered process ID regardless of whether or not the IRP from the process with the process ID that matches the registered process ID is stored in the queue 81. The IRP from the process is not output to the PD_FS 54.

一方、ステップ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 PD filter 53 is in the run state, the process proceeds to steps S174 and S175 in sequence, and steps S71 and S72 in FIG. The same processing as in the case of is performed.

即ち、ステップS174において、フィルタコア53Aは、キュー81に記憶されたIRPから、IRPプライオリティが最も高い(最も大きい)ものを検索し、ステップS175に進む。   That is, in step S174, the filter core 53A searches the IRP stored in the queue 81 for the highest (highest) IRP priority, and proceeds to step S175.

ステップS175では、フィルタコア53Aは、ステップS174の検索によって得られたIRPプライオリティが最も高いIRPを処理し、ステップS171に戻る。即ち、ステップS175では、フィルタコア53Aは、IRPプライオリティが最も高いIRPを、優先的に、キュー81から読み出し、NT入出力マネージャ52を介して、PD_FS54に出力する。   In step S175, the filter core 53A processes the IRP having the highest IRP priority obtained by the search in step S174, and returns to step S171. That is, in step S175, the filter core 53A preferentially reads the IRP having the highest IRP priority from the queue 81 and outputs it to the PD_FS 54 via the NT input / output manager 52.

従って、PDフィルタ53がラン状態の場合は、PDフィルタ53では、図11における場合と同様に、キュー81からIRPが読み出され、PD_FS54に出力される。   Therefore, when the PD filter 53 is in the run state, the PD filter 53 reads the IRP from the queue 81 and outputs it to the PD_FS 54 as in the case of FIG.

以上のように、PDフィルタ53では、登録プロセスIDと一致するプロセスIDのプロセスからのIRPには、最大のIRPプライオリティを設定し、登録プロセスIDと一致しないプロセスIDのプロセスからのIRPには、最小のIRPプライオリティを設定する。   As described above, the PD filter 53 sets the maximum IRP priority for the IRP from the process with the process ID matching the registration process ID, and the IRP from the process with the process ID not matching with the registration process ID Set the minimum IRP priority.

そして、PDフィルタ53は、IRPプライオリティが設定されたIRPを、キュー81に記憶させ、ラン状態の場合は、キュー81に記憶されたIRPを、IRPプライオリティにしたがって処理するが、ポーズ状態の場合は、キュー81に記憶されたIRPのうち、最大のIRPプライオリティが設定されているIRP、即ち、登録プロセスIDと一致するプロセスIDのプロセスからのIRPのみを処理する。   Then, the PD filter 53 stores the IRP for which the IRP priority is set in the queue 81. In the run state, the PD filter 53 processes the IRP stored in the queue 81 according to the IRP priority, but in the pause state. Among the IRPs stored in the queue 81, only the IRP for which the maximum IRP priority is set, that is, the IRP from the process whose process ID matches the registered process ID is processed.

従って、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 filter 53 to register the process ID of the process 75 in the PD_APL 41 loaded by the process 75, and the AV application 33 records and reproduces AV data. When the PD filter 53 is requested to enter the pause state when performing the above, the PD filter 53 sets the maximum IRP priority for the IRP from the process 75 of the PD_APL 41, and further increases the maximum IRP priority. Only the IRP for which the IPR priority is set, that is, the IRP from the process 75 of the PD_APL 41 is processed (output to the PD_FS 54).

このように、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 PD_APL 41 is processed in this way, the optical disc by the AV application 33 is waited for the IRP processing from the applications 31 and 32, the seek of the drive 2 generated by the IRP processing, etc. It is possible to prevent the reading and writing of data from 3 from being hindered. Thereby, the AV application 33 can record and reproduce the AV data on the optical disc 3 in real time.

ここで、第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 PD_APL 41 is not stored in the queue 81, the IRP from the application 31 or 32 (the process) is output from the PD filter 53 to the PD_FS 54. sell. On the other hand, according to the second function, when the PD filter 53 is in the paused state, the IRP from the process 75 of the PD_APL 41 is stored, of course, when stored in the queue 81. Even when there is no IRP, the IRP from the application 31 or 32 (the process) is not output from the PD filter 53 to the PD_FS 54.

なお、図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 PD_FS 54 as the specific IRP in the PD filter 53 in the paused state. In addition, for example, it is possible to output only the IRP of the process ID that matches the registered process ID to the PD_FS 54 by using the IRP of the process ID that matches the registered process ID as a specific IRP. That is, the PD filter 53 can simply output an IRP having a process ID that matches the registered process ID to the PD_FS 54 without setting the IRP priority.

次に、AVデータをリアルタイムで読み書きすることを保証するためのPDフィルタ53の第3の機能について説明する。   Next, a third function of the PD filter 53 for ensuring that AV data is read and written in real time will be described.

即ち、第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 PD filter 53 is a functional switch for turning on / off the output of the IRP from the application other than the AV application 33, that is, the applications 31 and 32 (process thereof) to the PD_FS 54. The IRP from the applications 31 and 32 is prevented from being output to the PD_FS 54 by the functional switch. As a result, the PD filter 53 does not output the IRP from the applications 31 and 32 other than the AV application 33 to the PD_FS 54, and outputs only the IRP from the AV application 33 to the PD_FS 54. Guarantees reading and writing in

図17は、以上のような第3の機能を実装したPDフィルタ53の構成例を示している。   FIG. 17 shows a configuration example of the PD filter 53 in which the third function as described above is mounted.

図17において、PDフィルタ53のフィルタコア53は、AVアプリケーション33以外のアプリケーション31および32からのIRPの、PD_FS54への出力をオン/オフする機能的なスイッチ(Switch)としてのスイッチ101を有している。   In FIG. 17, the filter core 53 of the PD filter 53 includes a switch 101 as a functional switch (Switch) for turning on / off the output of the IRP from the applications 31 and 32 other than the AV application 33 to the PD_FS 54. ing.

スイッチ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 registry 58, for example, when the OS 30 is started (Boot) or when the optical disk 3 is loaded (Inject) into the drive 2. Note that the state of the switch 101 cannot be switched after the volume corresponding to the drive 2 is mounted on the PC 1, for example.

ここで、スイッチ設定情報は、例えば、AVアプリケーション33のインストール時などにレジストリ58に記憶される。即ち、AVアプリケーション33のインストール時に、スイッチ101をオンまたはオフのいずれの状態とするかをユーザに選択してもらうようにし、その選択されたスイッチ101の状態が、スイッチ設定情報として、レジストリ58に記憶される。なお、レジストリ58に記憶されたスイッチ設定情報は、AVアプリケーション33のインストール後、そのAVアプリケーション33のオプション設定を行う画面等において変更することができるようにすることが可能である。   Here, the switch setting information is stored in the registry 58 when the AV application 33 is installed, for example. That is, when the AV application 33 is installed, the user selects whether the switch 101 is turned on or off, and the state of the selected switch 101 is stored in the registry 58 as switch setting information. Remembered. Note that the switch setting information stored in the registry 58 can be changed after installation of the AV application 33 on a screen or the like for setting options of the AV application 33.

スイッチ101は、オン状態となっている場合、すべてのアプリケーション(図17では、アプリケーション31乃至33)からのIRPを、PD_FS54に出力する。   When the switch 101 is in the on state, the switch 101 outputs IRPs from all applications (applications 31 to 33 in FIG. 17) to the PD_FS 54.

一方、スイッチ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 AV application 33 is output to the PD_FS 54, and the other applications 31 and 32 (or their processes) are driven. 2 (the file system) corresponding to (the optical disk 3 mounted on) is camouflaged. As a result, the switch 101 does not need to output the IRP from the other applications 31 and 32 to the PD_FS 54.

ここで、オフ状態となっているスイッチ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 PD_API 41, but the volume is read-only (Read Only). A status indicating that (File) and directory (Directory) do not exist is returned as a response.

これにより、スイッチ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 PD filter 53 of FIG. 17 will be described with reference to the flowchart of FIG.

例えば、OS30が起動され、あるいは、光ディスク3がドライブ2に装着されると、ステップS191において、フィルタコア53Aは、レジストリ58から、スイッチ設定情報を取得し、ステップS192に進む。   For example, when the OS 30 is activated or the optical disk 3 is loaded in the drive 2, the filter core 53A acquires switch setting information from the registry 58 in step S191, and proceeds to step S192.

ステップS192では、フィルタコア53Aは、スイッチ設定情報にしたがって、スイッチ101をオンまたはオフ状態に設定する。   In step S192, the filter core 53A sets the switch 101 to the on or off state according to the switch setting information.

そして、フィルタコア53Aは、アプリケーション31乃至33のうちのいずれかから、IRPが供給されるのを待って、ステップS193に進み、そのIRPを受信して、ステップS194に進む。   Then, the filter core 53A waits for an IRP to be supplied from any of the applications 31 to 33, proceeds to step S193, receives the IRP, and proceeds to step S194.

ステップ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 filter core 53A determines whether the IRP received in step S193 (performed immediately before) is an IRP from the AV application 33 (PD_API 41). If it is determined in step S194 that the IRP received in step S193 is the IRP from the AV application 33, the process proceeds to step S195, and the filter core 53A outputs the IRP to the PD_FS 54, and the applications 31 to 33 are processed. After waiting for the next IRP to be supplied from any of the above, the process returns to step S193.

また、ステップ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 AV application 33, that is, if the IRP received in step S193 is an IRP from the application 31 or 32, In step S196, the filter core 53A determines whether or not the switch 101 is off.

ステップ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 filter core 53A determines the IRP received in step S193. , Output to the PD_FS 54, wait for the next IRP to be supplied from any of the applications 31 to 33, and return to step S193.

また、ステップ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 application 31 or 32 that is the output source of the IRP received in step S193. File system impersonation response that impersonates the file system, that is, for example, as described above, the volume is mounted, but the volume is read-only, and the file and directory do not exist in the volume. Returns the status. Then, after waiting for the next IRP to be supplied from any of the applications 31 to 33, the process returns to step S193, and the same processing is repeated thereafter.

以上のように、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 PD filter 53, when the switch 101 is in the OFF state, only the IRP from the AV application 33 is output to the PD_FS 54. Therefore, waiting for the IRP processing from the application 31 or 32, or the IRP It is possible to prevent the AV application 33 from interfering with the reading / writing of data with respect to the optical disc 3 due to the seek of the drive 2 caused by the above process. Thereby, the AV application 33 can record and reproduce the AV data on the optical disc 3 in real time.

なお、ステップ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 filter 53. However, the first to third functions can be mounted on the PD_FS 54 instead of the PD filter 53. is there.

ところで、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 NT cache manager 59 for the data requested by the IRP from the PD filter 53. Perform cache processing.

そして、例えば、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 filter 53 is cached in the NT cache manager 59, the cached data is returned from the PD_FS 54 to the PD filter 53. When the data requested by the IRP from the filter 53 is not cached in the NT cache manager 59, the IRP from the PD filter 53 is output from the PD_FS 54 to the PD storage 55.

従って、PDフィルタ53からのIRPによって要求されているデータが、NTキャッシュマネージャ59にキャッシュされていない場合は、キャッシュ機能がないケースと比較すると、キャッシュ処理の分、即ち、CPU12(図2)がキャッシュ処理の処理ルーチンを実行する分だけ、いわば余計なオーバヘッドが生じることとなる。   Therefore, when the data requested by the IRP from the PD filter 53 is not cached in the NT cache manager 59, compared with the case where there is no cache function, the amount of cache processing, that is, the CPU 12 (FIG. 2) As much as the cache processing routine is executed, an extra overhead occurs.

このオーバヘッドは、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 PD_FS 54 to the PD storage 55. Since the delay in the output of the IRP from the AV application 33 to the PD storage 55 from the PD_FS 54 is a factor that hinders playback and recording of AV data in real time, the IRP from the AV application 33 is It is desirable that there is no such delay.

このような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 PD filter 53 are output from the PD_FS 54 to the PD storage 55. That is, all the IRPs from the applications 31 to 33 are output from the PD filter 53 to the PD storage 55 via the PD_FS 54.

即ち、この場合、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 application 33, all the IRPs from the applications 31 and 32 that are applications other than the AV application 33 are also output from the PD filter 53 to the PD storage 55 via the PD_FS 54. . A seek occurs in the drive 2 in order to read data required by the IRP from the applications 31 and 32.

このシークは、AVアプリケーション33からのIRPによって要求されるAVデータの読み出し等をリアルタイムで行うことを妨げることとなる。   This seek prevents reading of AV data requested by the IRP from the AV application 33 in real time.

一方、キャッシュ機能を利用する場合には、アプリケーション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 applications 31 and 32 is cached in the NT cache manager 59, the cached data is transferred from the PD_FS 54 to the PD filter. Returned to 53. In this case, the drive 2 does not generate a seek for reading data requested by the IRP from the applications 31 and 32 from the optical disk 3.

以上から、AVアプリケーション33においては、キャッシュ機能を利用しないことにより、キャッシュ処理による遅延を防止することができ、その結果、AVデータの再生や記録のリアルタイム性を向上させることができる。   From the above, in the AV application 33, by not using the cache function, a delay due to the cache process can be prevented, and as a result, the real-time performance of AV data reproduction and recording can be improved.

さらに、AVアプリケーション33以外のアプリケーション31および32においては、キャッシュ機能を利用することにより、ドライブ2でのシークの発生を低減することができ、その結果、やはり、AVデータの再生や記録のリアルタイム性を向上させることができる。   Furthermore, in the applications 31 and 32 other than the AV application 33, by using the cache function, it is possible to reduce the occurrence of seek in the drive 2, and as a result, the AV data is reproduced and recorded in real time. Can be improved.

そこで、PDフィルタ53には、アプリケーション31および32からのIRPについては、キャッシュ機能を利用するように処理する一方、AVアプリケーション33からのIRPについては、キャッシュ機能の利用の有無を設定し、その設定結果にしたがって処理する、いわばキャッシュオン/オフ(cache ON/OFF)機能を実装することができる。   Therefore, the PD filter 53 processes the IRP from the applications 31 and 32 so as to use the cache function, while the IRP from the AV application 33 sets whether or not the cache function is used and sets the setting. It is possible to implement a cache ON / OFF function that performs processing according to the result.

図19は、キャッシュオン/オフ機能を実装したPDフィルタ53の構成例を示している。   FIG. 19 shows a configuration example of the PD filter 53 in which the cache on / off function is implemented.

なお、キャッシュオン/オフ機能は、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 AV application 33 that loads the PD_API 41, and the applications 31 and 32 always use the cache function. That is, the cache on / off function has nothing to do with the applications 31 and 32. For this reason, in FIG. 19, only the AV application 33 provided with the cache on / off function among the applications 31 to 33 is illustrated.

図19において、PDフィルタ53は、コマンドバッファ111を有している。コマンドバッファ111は、例えば、AVアプリケーション33(のPD_API41)からのIRP、即ち、AVアプリケーション33のPD_API41がAPI関数を呼び出すことによってNT入出力マネージャ52が出力するIRPを一時記憶する。   In FIG. 19, the PD filter 53 has a command buffer 111. The command buffer 111 temporarily stores, for example, an IRP from the AV application 33 (PD_API 41), that is, an IRP output from the NT input / output manager 52 when the PD_API 41 of the AV application 33 calls an API function.

また、図19のPDフィルタ53では、フィルタコア53Aが、AVアプリケーション33(のPD_API41)によるキャッシュ機能の利用の有無を設定し、その設定結果にしたがって、コマンドバッファ111に記憶されたAVアプリケーション33からのIRPを処理する。   In the PD filter 53 of FIG. 19, the filter core 53A sets whether or not the cache function is used by the AV application 33 (PD_API 41), and from the AV application 33 stored in the command buffer 111 according to the setting result. Handles IRP.

即ち、フィルタコア53Aは、キャッシュ機能の利用の有無の設定が、キャッシュ機能を利用する設定になっている場合、コマンドバッファ111に記憶されたAVアプリケーション33からのIRPを、PD_FS54に出力するに際し、PD_FS54においてキャッシュ機能を利用するように、IRPの出力制御を行う。   That is, the filter core 53A outputs the IRP from the AV application 33 stored in the command buffer 111 to the PD_FS 54 when the setting of whether to use the cache function is set to use the cache function. IRP output control is performed so that the PD_FS 54 uses the cache function.

また、フィルタコア53Aは、キャッシュ機能の利用の有無の設定が、キャッシュ機能を利用しない設定になっている場合、コマンドバッファ111に記憶されたAVアプリケーション33からのIRPを、PD_FS54に出力するに際し、PD_FS54においてキャッシュ機能を利用せずに、PDストレージ55に出力されるように、IRPの出力制御を行う。   Further, the filter core 53A outputs the IRP from the AV application 33 stored in the command buffer 111 to the PD_FS 54 when the setting of whether to use the cache function is set not to use the cache function. In the PD_FS 54, IRP output control is performed so that data is output to the PD storage 55 without using the cache function.

次に、図20は、PDフィルタ53がキャッシュオン/オフ機能の処理を行うときに、PD_API41が、PDフィルタ53を制御するために、AVアプリケーション33に提供する制御用(PDフィルタ53の制御用)のAPI(関数)を示している。   Next, FIG. 20 shows a control (PD control 53 control) provided to the AV application 33 by the PD_API 41 to control the PD filter 53 when the PD filter 53 performs the cache on / off function processing. ) API (function).

図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 AV application 33 in order for the PD_API 41 to control the PD filter 53. ing.

ここで、図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 Win32 subsystem 51.

即ち、PD_API41は、Win32サブシステム51が提供するファイルストリーム用のAPI関数とは別に、固有のファイルストリーム用のAPI関数PdOpenFile(), PdCloseFile(), PdReadFile(), PdWriteFile()を提供する。   That is, the PD_API 41 provides unique file stream API functions PdOpenFile (), PdCloseFile (), PdReadFile (), and PdWriteFile () separately from the file stream API functions provided by the Win32 subsystem 51.

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 filter core 53A) to set whether to use the cache function or not according to the cache information of the argument. The API function PdOpenFile () returns a file handle of the opened file as a return value when the file is successfully opened, and returns 0xffffffff as a return value when the file fails to open. Note that 0x indicates that the subsequent value is a hexadecimal number.

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 Win32 subsystem 51.

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 Win32 subsystem 51.

PD_API41は、API関数PdOpenFile(), PdCloseFile(), PdReadFile(), PdWriteFile()が呼び出されると、それぞれ、Win32サブシステム51が提供する、対応するAPI関数DeviceIoControl()を呼び出す。   When the API functions PdOpenFile (), PdCloseFile (), PdReadFile (), and PdWriteFile () are called, the PD_API 41 calls the corresponding API function DeviceIoControl () provided by the Win32 subsystem 51.

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 Win32 subsystem 51 makes a request according to the API function DeviceIoControl () to the NT I / O manager 52, and the NT I / O manager 52 sends the request to the IRP_MJ_DEVICE_CONTROL. And is supplied to the PD filter 53.

この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 Win32 subsystem 51 to the NT I / O manager 52 using the API function DeviceIoControl () provided by the Win32 subsystem 51. In the NT input / output manager 52, the IRP_MJ_DEVICE_CONTROL IRP subcode is designated.

次に、図22のフローチャートを参照して、PDフィルタ53がキャッシュオン/オフ機能を実装している場合の、図19におけるAVアプリケーション33、PD_API41、PDフィルタ53、およびPD_FS54の処理の概要について説明する。   Next, an overview of the processing of the AV application 33, the PD_API 41, the PD filter 53, and the PD_FS 54 in FIG. 19 when the PD filter 53 has a cache on / off function will be described with reference to the flowchart in FIG. To do.

AVアプリケーション33は、光ディスク3に対するAVデータの読み書きを、キャッシュ機能を利用せずに行う場合、ステップS201において、AVデータの読み書きを行おうとするファイルのオープンを要求するAPI関数PdOpenFile()を、キャッシュ機能を利用しない旨のキャッシュ情報(Cache OFF)を引数として呼び出す。   When the AV application 33 reads / writes AV data from / to the optical disc 3 without using the cache function, in step S201, the AV application 33 caches an API function PdOpenFile () that requests opening of a file to be read / written by AV data. Call the cache information (Cache OFF) not to use the function as an argument.

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_API 41 receives a call to the API function PdOpenFile () by the AV application 33, and proceeds to step S212. In response to the call to the API function PdOpenFile (), the PD_API 41 requests an API function DeviceIoControl ( ). By calling this API function DeviceIoControl (), an IRP of IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_OPEN_FILE requesting file opening is specified as IOCTL is supplied from the NT input / output manager 52 to the PD filter 53. In this case, IOCTL_PD_OPEN_FILE includes cache information indicating that the cache function is not used.

PDフィルタ53は、ステップS221において、NT入出力マネージャ52からのIRPを受信し、そのIRPのIOCTL_PD_OPEN_FILEにしたがい、キャッシュ機能の利用の有無を表すキャッシュフラグを、キャッシュ機能を利用しない旨を表す、例えば、0にリセットし(設定し)、これにより、AVアプリケーション33でキャッシュオフを指定してオープンされたファイルについてはキャッシュ機能を利用しないキャッシュオフ状態となる。   In step S221, the PD filter 53 receives the IRP from the NT I / O manager 52, and indicates that the cache function is not used according to the IOCTL_PD_OPEN_FILE of the IRP, indicating that the cache function is not used. , Reset (set) to 0, and the file opened by designating cache off by the AV application 33 enters a cache off state in which the cache function is not used.

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 PD filter 53 is the IRP_MJ_DEVICE_CONTROL IRP from the PD_API 41 (the API function DeviceIoControl that the PD_API 41 calls in response to a call to the API function PdOpenFile (), PdCloseFile (), PdReadFile (), or PdWriteFile ()) Corresponding to (), IRP_MJ_DEVICE_CONTROL IRP in which IOCTL_PD_OPEN_FILE, IOCTL_PD_CLOSE_FILE, ICCTL_PD_READ_FILE, or IOCTL_PD_WRITE_FILE is specified, respectively, is output to the PD_FS 54 as the IRP of that IRP_MJ_DEVICE_CONTROL, and is output by the IRP requested by the PD_API 41 IRP output control from the PD_API 41 is performed so that reading and writing are performed without using the cache function.

即ち、ステップ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 filter 53 outputs the IRP_MJ_DEVICE_CONTROL IRP specified by IOCTL_PD_OPEN_FILE from the PD_API 41 received from the NT input / output manager 52 to the PD_FS 54 as it is after the cache is turned off.

PD_FS54は、ステップS231において、PDフィルタ53からの、IOCTL_PD_OPEN_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPを受信し、PDストレージ55に出力する。これにより、光ディスク3上のファイルがオープンされる。   In step S <b> 231, the PD_FS 54 receives the IRP_MJ_DEVICE_CONTROL IRP in which IOCTL_PD_OPEN_FILE is specified from the PD filter 53, and outputs it to the PD storage 55. Thereby, the file on the optical disk 3 is opened.

その後、例えば、AVアプリケーション33が、ステップS202において、光ディスク3に対するアクセス要求としての、例えば、ファイル(ファイルストリーム(File Stream))の読み出し、または書き込みを要求するAPI関数PdReadFile()、またはPdWriteFile()を呼び出すと、PD_API41は、ステップS213において、そのAPI関数PdReadFile()、またはPdWriteFile()の呼び出しを受信し、ステップS214に進む。   Thereafter, for example, the AV application 33 requests, for example, an API function PdReadFile () or PdWriteFile () that requests reading or writing of a file (file stream) as an access request to the optical disc 3 in step S202. In step S213, the PD_API 41 receives the API function PdReadFile () or PdWriteFile () call and proceeds to step S214.

ステップ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_API 41 calls an API function DeviceIoControl () that requests reading or writing of a file in response to a call to the API function PdReadFile () or PdWriteFile () from the AV application 33. IRP_MJ_DEVICE_CONTROL IRP for which IOCTL_PD_READ_FILE requesting read of the IRP is specified as IOCTL, or IRP_MJ_DEVICE_CONTROL for which writing of the file is requested as ICTL_PD_WRITE_FILE is supplied from the I / O manager 52 to the PD filter 53 .

PDフィルタ53は、ステップS223において、NT入出力マネージャ52からのIRP_MJ_DEVICE_CONTROLのIRPを受信して、ステップS224に進み、PD_FS54に出力する。   In step S223, the PD filter 53 receives the IRP_MJ_DEVICE_CONTROL IRP from the NT input / output manager 52, proceeds to step S224, and outputs it to the PD_FS 54.

ここで、キャッシュオフ状態のPDフィルタ53は、上述したように、PD_API41からのIRP_MJ_DEVICE_CONTROLのIRPを、そのIRP_MJ_DEVICE_CONTROLのIRPのまま、PD_FS54に出力する。   Here, as described above, the PD filter 53 in the cache-off state outputs the IRP of IRP_MJ_DEVICE_CONTROL from the PD_API 41 to the PD_FS 54 while maintaining the IRP of the IRP_MJ_DEVICE_CONTROL.

従って、いまの場合、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 filter 53, IRP_MJ_DEVICE_CONTROL IRP in which IOCTL_PD_READ_FILE for requesting file reading is specified as IOCTL, or IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_WRITE_FILE for requesting file writing is specified as IOCTL. The IRP is output to the PD_FS 54 while maintaining the IRP of the IRP_MJ_DEVICE_CONTROL.

PD_FS54は、ステップS232において、PDフィルタ53からのIRP_MJ_DEVICE_CONTROLのIRPを受信する。   In step S232, the PD_FS 54 receives the IRP_MJ_DEVICE_CONTROL IRP from the PD filter 53.

ここで、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 PD_FS 54 uses the NT cache for the IRP_MJ_READ or IRP_MJ_WRITE IRP that the NT input / output manager 52 outputs to the PD filter 53 when the API function ReadFile () or WriteFile () provided by the Win32 subsystem 51 is called. A cache function is provided by the manager 59, and the IRP_MJ_DEVICE_CONTROL IRP is not provided with a cache function.

従って、ステップS232において、PDフィルタ53からのIRP_MJ_DEVICE_CONTROLのIRPを受信したPD_FS54は、そのIRPを、即座に、PDストレージ55に出力する。即ち、この場合、キャッシュ機能は利用されない。   Therefore, in step S232, the PD_FS 54 that has received the IRP_MJ_DEVICE_CONTROL IRP from the PD filter 53 immediately outputs the IRP to the PD storage 55. That is, in this case, the cache function is not used.

その後、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 AV application 33 calls the API function PdCloseFile () for requesting the close of the file requested to be opened in step S201 in step S203, the PD_API 41 performs the API function PdCloseFile () of the AV application 33 in step S215. Upon receiving the call, the process proceeds to step S216, and the API function DeviceIoControl () for requesting the close of the file is called according to the call of the API function PdCloseFile (). By calling this API function DeviceIoControl (), an IRP of IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_CLOSE_FILE requesting file close is specified as IOCTL is supplied from the NT input / output manager 52 to the PD filter 53.

PDフィルタ53は、ステップS225において、NT入出力マネージャ52からのIRPを受信して、ステップS226に進み、そのまま、PD_FS54に出力する。   In step S225, the PD filter 53 receives the IRP from the NT input / output manager 52, proceeds to step S226, and outputs it to the PD_FS 54 as it is.

PD_FS54は、ステップS233において、PDフィルタ53からの、IOCTL_PD_CLOSE_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPを受信し、PDストレージ55に出力する。これにより、光ディスク3上のファイルがクローズされる。   In step S <b> 233, the PD_FS 54 receives the IRP_MJ_DEVICE_CONTROL IRP in which IOCTL_PD_CLOSE_FILE is specified from the PD filter 53, and outputs it to the PD storage 55. Thereby, the file on the optical disk 3 is closed.

一方、AVアプリケーション33が、光ディスク3に対するAVデータの読み書きを、キャッシュ機能を利用して行う場合、ステップS241において、AVデータの読み書きを行おうとするファイルのオープンを要求するAPI関数PdOpenFile()を、キャッシュ機能を利用する旨のキャッシュ情報(Cache ON)を引数として呼び出す。   On the other hand, when the AV application 33 reads / writes AV data from / to the optical disk 3 using the cache function, in step S241, an API function PdOpenFile () for requesting opening of a file to be read / written to AV data is set. Call the cache information (Cache ON) to use the cache function as an argument.

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_API 41 receives a call to the API function PdOpenFile () by the AV application 33, and proceeds to step S252. In response to the call to the API function PdOpenFile (), the PD_API 41 requests an API function DeviceIoControl ( ). By calling this API function DeviceIoControl (), an IRP of IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_OPEN_FILE requesting file opening is specified as IOCTL is supplied from the NT input / output manager 52 to the PD filter 53. In this case, IOCTL_PD_OPEN_FILE includes cache information indicating that the cache function is used.

PDフィルタ53は、ステップS261において、NT入出力マネージャ52からのIRPを受信し、そのIRPのIOCTL_PD_OPEN_FILEにしたがい、キャッシュ機能の利用の有無を表すキャッシュフラグを、キャッシュ機能を利用する旨を表す、例えば、1にセットし(設定し)、これにより、AVアプリケーション33でキャッシュオンを指定してオープンされたファイルについて、キャッシュ機能を利用するキャッシュオン状態となる。   In step S261, the PD filter 53 receives the IRP from the NT input / output manager 52, and indicates that the cache function is used according to the IOCTL_PD_OPEN_FILE of the IRP indicating that the cache function is used. As a result, a file opened by designating cache on by the AV application 33 is set to a cache on state using the cache function.

PDフィルタ53は、キャッシュオン状態となっている間、PD_API41からのIRPによって要求されるデータの読み書きが、キャッシュ機能を利用して行われるように制御する。   The PD filter 53 controls to read / write data requested by the IRP from the PD_API 41 using the cache function while in the cache-on state.

即ち、ステップ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 filter 53 outputs the IRP of IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_OPEN_FILE is specified from the PD_API 41, which is received from the NT input / output manager 52 after the cache is turned on, to the PD_FS 54.

PD_FS54は、ステップS271において、PDフィルタ53からの、IOCTL_PD_OPEN_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPを受信し、PDストレージ55に出力する。これにより、光ディスク3上のファイルがオープンされる。   In step S <b> 271, the PD_FS 54 receives the IRP_MJ_DEVICE_CONTROL IRP in which IOCTL_PD_OPEN_FILE is specified from the PD filter 53, and outputs it to the PD storage 55. Thereby, the file on the optical disk 3 is opened.

その後、例えば、AVアプリケーション33が、ステップS242において、光ディスク3に対するアクセス要求としての、例えば、ファイルの読み出し、または書き込みを要求するAPI関数PdReadFile()、またはPdWriteFile()を呼び出すと、PD_API41は、ステップS253において、そのAPI関数PdReadFile()、またはPdWriteFile()の呼び出しを受信し、ステップS254に進む。   Thereafter, for example, when the AV application 33 calls an API function PdReadFile () or PdWriteFile () for requesting, for example, reading or writing of a file as an access request to the optical disc 3 in step S242, the PD_API 41 In S253, the API function PdReadFile () or PdWriteFile () call is received, and the process proceeds to Step S254.

ステップ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_API 41 calls an API function DeviceIoControl () that requests reading or writing of a file in response to a call to the API function PdReadFile () or PdWriteFile () from the AV application 33. IRP_MJ_DEVICE_CONTROL IRP for which IOCTL_PD_READ_FILE requesting read of the IRP is specified as IOCTL, or IRP_MJ_DEVICE_CONTROL for which writing of the file is requested as ICTL_PD_WRITE_FILE is supplied from the I / O manager 52 to the PD filter 53 .

PDフィルタ53は、ステップS263において、NT入出力マネージャ52からのIRP_MJ_DEVICE_CONTROLのIRPを受信して、ステップS264に進み、PD_FS54に出力する。   In step S263, the PD filter 53 receives the IRP_MJ_DEVICE_CONTROL IRP from the NT input / output manager 52, proceeds to step S264, and outputs it to the PD_FS 54.

ここで、キャッシュオン状態の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 PD_API 41 are specified for the PD filter 53 in the cache-on state. With respect to the IRP of the IRP_MJ_DEVICE_CONTROL, the IRP is converted and output to the PD_FS 54.

即ち、ステップ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 Win32 subsystem 51 and requesting file reading is called. The output manager 52 converts the IRP_MJ_READ output to the PD filter 53 and outputs it to the PD_FS 54.

また、ファイルの書き込みを要求する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 / O manager 52 performs PD filter when WriteFile () requesting file writing provided by the Win32 subsystem 51 is called. It is converted into IRP of IRP_MJ_WRITE to be output to 53 and output to PD_FS 54.

PD_FS54は、ステップS272において、PDフィルタ53からのIRP_MJ_READのIRP、またはIRP_MJ_WRITEのIRPを受信する。   In step S272, the PD_FS 54 receives the IRP of IRP_MJ_READ or the IRP of MRP_MJ_WRITE from the PD filter 53.

ここで、上述したように、PD_FS54は、IRP_MJ_READのIRPまたはIRP_MJ_WRITEのIRPについては、NTキャッシュマネージャ59によるキャッシュ機能を提供する。   Here, as described above, the PD_FS 54 provides a cache function by the NT cache manager 59 for the IRP of IRP_MJ_READ or the IRP of IRP_MJ_WRITE.

従って、ステップS272において、PDフィルタ53からのIRP_MJ_READのIRP、またはIRP_MJ_WRITEのIRPを受信したPD_FS54では、そのIRPによって要求されるデータの読み書きがキャッシュ機能を利用して行われる。   Therefore, in step S272, the PD_FS 54 that has received the IRP of IRP_MJ_READ or the IRP_MJ_WRITE IRP from the PD filter 53 uses the cache function to read and write data requested by the IRP.

即ち、例えば、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 PD filter 53 is cached in the NT cache manager 59, the PD_FS 54 uses the cached data as a response to the PD Return to filter 53. Further, for example, when the data requested to be read by the IRP_MJ_READ IRP from the PD filter 53 is not cached in the NT cache manager 59, the PD_FS 54 uses the IRP_MJ_READ IRP from the PD filter 53 as the PD storage. To 55.

その後、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 AV application 33 calls the API function PdCloseFile () for requesting the close of the file requested to be opened in step S241 in step S243, the PD_API 41 performs the API function PdCloseFile () of the AV application 33 in step S255. Upon receiving the call, the process proceeds to step S256, and the API function DeviceIoControl () for requesting the close of the file is called in response to the call of the API function PdCloseFile (). By calling this API function DeviceIoControl (), an IRP of IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_CLOSE_FILE requesting file close is specified as IOCTL is supplied from the NT input / output manager 52 to the PD filter 53.

PDフィルタ53は、ステップS265において、NT入出力マネージャ52からのIRPを受信して、ステップS266に進み、そのまま、PD_FS54に出力する。   In step S265, the PD filter 53 receives the IRP from the NT input / output manager 52, proceeds to step S266, and outputs it to the PD_FS 54 as it is.

PD_FS54は、ステップS273において、PDフィルタ53からの、IOCTL_PD_CLOSE_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPを受信し、PDストレージ55に出力する。これにより、光ディスク3上のファイルがクローズされる。   In step S <b> 273, the PD_FS 54 receives the IRP_MJ_DEVICE_CONTROL IRP in which IOCTL_PD_CLOSE_FILE is specified from the PD filter 53, and outputs it to the PD storage 55. Thereby, the file on the optical disk 3 is closed.

なお、ファイルのオープンを要求する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 PC 1 or the drive 2 (for example, the operation clock of the CPU 12 or the worst seek time of the drive 2), the user's operation, or the like.

次に、図23のフローチャートを参照して、図19のPDフィルタ53によるキャッシュオン/オフの機能の処理について説明する。   Next, with reference to the flowchart of FIG. 23, processing of the cache on / off function by the PD filter 53 of FIG. 19 will be described.

アプリケーション31乃至33のうちのいずれか(のプロセス)において、ドライブ2に対するI/O関係の処理を要求する(I/O要求を行う)API関数が呼び出されると、そのAPI関数の呼び出しに応じて、NT入出力マネージャ52は、そのAPI関数に対応するIRPを、PDフィルタ53に供給する。   When any of the applications 31 to 33 (process) calls an API function that requests an I / O-related process for the drive 2 (i.e., performs an I / O request), the API function is called. The NT input / output manager 52 supplies an IRP corresponding to the API function to the PD filter 53.

なお、本実施の形態においては、アプリケーション31乃至33(AVアプリケーション33のPD_API41も含む)により呼び出されるAPI関数としては、Win32サブシステム32が提供するものの他、PD_API41が提供するものがある。   In the present embodiment, API functions called by applications 31 to 33 (including PD_API 41 of AV application 33) include those provided by PD_API 41 in addition to those provided by Win32 subsystem 32.

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 Win32 subsystem 32, the Win32 subsystem 32 makes a request corresponding to the API function to the NT input / output manager 52, and the NT input / output manager 52 receives the API function. An IRP corresponding to the function is supplied to the PD filter 53. In addition, for calling an API function provided by the PD_API 41, the PD_API 41 calls an API function DeviceIoControl () corresponding to the API function, and the Win32 subsystem 32 requests a request corresponding to the API function DeviceIoControl (). The NT input / output manager 52 supplies the IRP corresponding to the API function DeviceIoControl () to the PD filter 53.

従って、アプリケーション31乃至33により呼び出されたAPI関数が、Win32サブシステム32が提供するAPI関数であっても、また、PD_API41が提供するAPI関数であっても、最終的には、そのAPI関数に対応するIRPが、NT入出力マネージャ52からPDフィルタ53に供給されることに変わりはない。   Therefore, even if the API function called by the applications 31 to 33 is an API function provided by the Win32 subsystem 32 or an API function provided by the PD_API 41, the API function is finally changed to the API function. The corresponding IRP is still supplied from the NT input / output manager 52 to the PD filter 53.

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 PD filter 53 receives the IRP supplied from the NT input / output manager 52 in response to the API function call, stores it in the command buffer 111, and proceeds to step S302. In step S302, the filter core 53A determines that the IRP stored in the command buffer 111 (in the immediately preceding step S301) is IOCTL_PD_OPEN_FILE (FIG. 21) for requesting opening of a file as an IRP (IRP of IRP_MJ_DEVICE_CONTROL). ) Is determined.

ここで、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 command buffer 111 is an IRP for which IOCTL_PD_OPEN_FILE is specified, the process proceeds to step S303, and the filter core 53A has cache information in IOCTL_PD_OPEN_FILE specified by the IRP. Determines whether or not indicates that the cache function is used.

ステップ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 filter core 53A sets the cache flag as a variable to 1 indicating that the cache function is used. As a result, the cache is turned on and the process proceeds to step S306.

また、ステップ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 filter core 53A indicates that the cache flag as a variable is not used. It is reset (set) to 0, thereby entering a cache-off state and proceeds to step S306.

ステップS306では、フィルタコア53Aは、コマンドバッファ111に記憶された、IOCTL_PD_OPEN_FILEが指定されているIRPを、PD_FS54に出力し、次のIRPが供給されるのを待って、ステップS301に戻る。   In step S306, the filter core 53A outputs the IRP specified with IOCTL_PD_OPEN_FILE stored in the command buffer 111 to the PD_FS 54, waits for the next IRP to be supplied, and returns to step S301.

なお、この場合、PD_FS54は、フィルタコア53AからのIOCTL_PD_OPEN_FILEが指定されているIRPを受信して、PDストレージ55に出力し、これにより、ファイルがオープンされる。   In this case, the PD_FS 54 receives an IRP in which IOCTL_PD_OPEN_FILE is specified from the filter core 53A, and outputs it to the PD storage 55, thereby opening the file.

一方、ステップ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 command buffer 111 is not an IRP for which IOCTL_PD_OPEN_FILE is specified, the process proceeds to step S307, and the filter core 53A determines that the IRP stored in the command buffer 111 is As IOCTL, it is determined whether IOCTL_PD_CLOSE_FILE (FIG. 21) for requesting file close is the designated IRP (IRP of IRP_MJ_DEVICE_CONTROL).

ステップ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 command buffer 111 is an IRP for which IOCTL_PD_CLOSE_FILE is specified, the process proceeds to step S308, and the filter core 53A specifies the IOCTL_PD_CLOSE_FILE stored in the command buffer 111. The output IRP is output to the PD_FS 54, waits for the next IRP to be supplied, and returns to step S301.

なお、この場合、PD_FS54は、フィルタコア53AからのIOCTL_PD_CLOSE_FILEが指定されているIRPを受信して、PDストレージ55に出力し、これにより、ファイルがクローズされる。   In this case, the PD_FS 54 receives the IRP in which IOCTL_PD_CLOSE_FILE is specified from the filter core 53A, and outputs it to the PD storage 55, whereby the file is closed.

また、ステップ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 command buffer 111 is not an IRP for which IOCTL_PD_CLOSE_FILE is specified, the process proceeds to step S309, and the filter core 53A determines that the IRP stored in the command buffer 111 is It is determined whether IOCTL_PD_READ_FILE that requests reading of a file or IOCTL_PD_WRITE_FILE (FIG. 21) that requests writing of a file is an IRP (IRP of IRP_MJ_DEVICE_CONTROL) as IOCTL.

ステップ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 command buffer 111 is not an IRP for which IOCTL_PD_READ_FILE or IOCTL_PD_WRITE_FILE is specified, the process proceeds to step S310, and the IRP stored in the command buffer 111 is output to the PD_FS 54. After waiting for the next IRP to be supplied, the process returns to step S301.

また、ステップ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 command buffer 111 is an IRP in which IOCTL_PD_READ_FILE or IOCTL_PD_WRITE_FILE is specified, the process proceeds to step 311 and the filter core 53A has a cache flag of 1. Determine whether or not.

ステップ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 filter core 53A) is in the cache-on state (set), the process proceeds to step S312 and the filter core 53A converts the IRP stored in the command buffer 111.

即ち、いまの場合、コマンドバッファ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 command buffer 111 is an IRP of IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_READ_FILE requesting file reading or IOCTL_PD_WRITE_FILE (FIG. 21) requesting file writing is designated as IOCTL. .

フィルタコア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 command buffer 111 is an IRP of IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_READ_FILE requesting file reading is specified, the filter core 53A, in step S312, the IRP of the IRP_MJ_DEVICE_CONTROL is replaced by the Win32 subsystem 51. When the provided API function ReadFile () is called, the NT input / output manager 52 converts the IRP_MJ_READ IRP output to the PD filter 53.

また、フィルタコア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 command buffer 111 is an IRP of IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_WRITE_FILE requesting file writing is specified, the filter core 53A changes the IRP of the IRP_MJ_DEVICE_CONTROL to the Win32 subsystem in step S312. When the API function WriteFile () provided by 51 is called, the NT input / output manager 52 converts the IRP_MJ_WRITE IRP output to the PD filter 53.

そして、ステップS313に進み、フィルタコア53Aは、ステップS312での変換後のIRP、即ち、IRP_MJ_READまたはIRP_MJ_WRITEのIRPを、PD_FS54に出力し、次のIRPが供給されるのを待って、ステップS301に戻る。   In step S313, the filter core 53A outputs the IRP after the conversion in step S312, that is, the IRP of IRP_MJ_READ or IRP_MJ_WRITE, to the PD_FS 54, and waits for the next IRP to be supplied to step S301. Return.

なお、この場合、PD_FS54は、フィルタコア53AからのIRP_MJ_READのIRP、またはIRP_MJ_WRITEのIRPを受信し、そのIRPによって要求されるデータの読み出し、または書き込みを、キャッシュ機能を利用して行う。   In this case, the PD_FS 54 receives an IRP of IRP_MJ_READ or IRP_MJ_WRITE from the filter core 53A, and reads or writes data requested by the IRP using a cache function.

即ち、上述したように、PD_FS54は、IRP_MJ_READのIRPまたはIRP_MJ_WRITEのIRPについては、NTキャッシュマネージャ59によるキャッシュ機能を提供する。   That is, as described above, the PD_FS 54 provides a cache function by the NT cache manager 59 for the IRP of IRP_MJ_READ or the IRP of IRP_MJ_WRITE.

従って、例えば、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_FS 54 from the filter core 53A is the IRP of IRP_MJ_READ, it is confirmed whether the data requested to be read by the IRP is cached in the NT cache manager 59. When the data requested to be read is cached, the PD_FS 54 returns the cached data to the PD filter 53 as a response. Further, for example, when the data requested to be read by the IRP_MJ_READ IRP from the PD filter 53 is not cached in the NT cache manager 59, the PD_FS 54 uses the IRP_MJ_READ IRP from the PD filter 53 as the PD storage. To 55.

ここで、PDストレージ55には、データの読み書きのための図示せぬリードライトバッファ(Read/Write Buffer)が用意されている。リードライトバッファのサイズは、例えば、ページング時のページサイズ(Page Size)(例えば、4KB(kilo byte))に等しくなっており、一度に読み書きすることができるデータの最大サイズは、このリードライトバッファのサイズに制限される。   Here, the PD storage 55 is provided with a read / write buffer (not shown) for reading and writing data. The size of the read / write buffer is, for example, equal to the page size at the time of paging (for example, 4 KB (kilo byte)), and the maximum size of data that can be read and written at a time is the read / write buffer. Limited to size.

このため、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 PD_FS 54 reads and writes the IRP of IRP_MJ_READ from the filter core 53A when the size of the data requested to be read by the IRP of IRP_MJ_READ from the filter core 53A exceeds the size of the read / write buffer. The data is divided into a plurality of IRPs of IRP_MJ_READ requesting to read data within the buffer size, and output to the PD storage 55. The same applies to the IRP_MJ_WRITE IRP from the filter core 53A.

一方、ステップ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 filter core 53A specifies the IRP stored in the command buffer 111, that is, IOCTL_PD_READ_FILE that requests reading of the file or IOCTL_PD_WRITE_FILE (FIG. 21) that requests writing of the file. The IRP is output to the PD_FS 54 as it is, waits for the next IRP to be supplied, and returns to step S301.

なお、この場合、PD_FS54は、フィルタコア53AからのIOCTL_PD_READ_FILE、、またはIOCTL_PD_WRITE_FILEが指定されているIRP_MJ_DEVICE_CONTROLのIRPを受信し、キャッシュ機能を利用せずに、即座に、そのIRPを、PDストレージ55に出力する。   In this case, the PD_FS 54 receives the IRP of IRP_MJ_DEVICE_CONTROL in which IOCTL_PD_READ_FILE or IOCTL_PD_WRITE_FILE is specified from the filter core 53A, and immediately outputs the IRP to the PD storage 55 without using the cache function. To do.

即ち、上述したように、PD_FS54は、IRP_MJ_DEVICE_CONTROLのIRPについては、キャッシュ機能を提供せず、即座に、PDストレージ55に出力する。   That is, as described above, the PD_FS 54 does not provide a cache function for the IRP_MJ_DEVICE_CONTROL IRP and immediately outputs it to the PD storage 55.

ここで、一度に読み書きすることができるデータの最大サイズは、上述したように、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 PD storage 55 as described above.

このため、フィルタコア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 PD_FS 54 in step S314 exceeds the size of the read / write buffer, the filter core 53A reads the IRP_MJ_DEVICE_CONTROL IRP from the read / write The data is divided into a plurality of IRP_MJ_DEVICE_CONTROL IRPs that request reading / writing of data within the buffer size and output to the PD_FS 54.

なお、キャッシュオン/オフ機能によって、キャッシュ機能が利用されたり、されなかったりするのは、図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 / output manager 52 to the PD filter 53 by calling the API function of FIG. 20 provided only by the PD_API 41.

従って、キャッシュオン/オフ機能を利用することができるのは、本実施の形態では、PD_API41をロードするAVアプリケーション33だけである。   Accordingly, in this embodiment, only the AV application 33 that loads the PD_API 41 can use the cache on / off function.

そして、AVアプリケーション33において、キャッシュ機能を利用しない場合には、AVアプリケーション33からのIRPに対するキャッシュ処理の分のオーバヘッドが生じることによる、そのIRPの処理の遅延を防止し、AVアプリケーション33によるAVデータの再生や記録のリアルタイム性を向上させることができる。   When the AV function 33 does not use the cache function, the IRP processing delay caused by the overhead of the cache processing for the IRP from the AV application 33 is prevented, and the AV data by the AV application 33 is prevented. The real-time performance of playback and recording can be improved.

一方、他のアプリケーション31や32は、Win32サブシステム51が提供するAPI関数ReadFile()またはWriteFile()を直接呼び出すことにより、データの読み出しまたは書き込みを要求するので、データの読み出しまたは書き込みにあたっては、必ず、キャッシュ機能を利用することになる。   On the other hand, the other applications 31 and 32 request to read or write data by directly calling the API function ReadFile () or WriteFile () provided by the Win32 subsystem 51. Be sure to use the cache function.

このキャッシュ機能の利用により、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 applications 31 and 32 are output from the PD_FS 54 to the PD storage 55 decreases. As a result, the seek of the drive 2 caused by the reading / writing of the data requested by the IRP from the applications 31 and 32, and the drive caused at the time of reading / writing the data requested by the IRP from the AV application 33 after the data reading / writing 2 can be prevented (reduced), and the AV data can be reproduced and recorded in real time by the AV application 33.

次に、上述の第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 PD filter 53 in the case where either one of the first function and the second function is used in combination with the cache on / off function.

図24においては、PDフィルタ53は、第1の機能の処理で説明したように、アプリケーション31乃至33からの、光ディスク3に対するアクセス要求に対応するIRPに対して、IRPプライオリティを設定し、そのIRPプライオリティが設定されたIRPをキュー81に記憶させる。そして、PDフィルタ53は、キュー81に記憶されたIRPを、そのIRPに設定されたプライオリティにしたがって読み出し、PD_FS54に出力する。   In FIG. 24, the PD filter 53 sets the IRP priority for the IRP corresponding to the access request to the optical disc 3 from the applications 31 to 33 as described in the processing of the first function, and the IRP The IRP in which the priority is set is stored in the queue 81. Then, the PD filter 53 reads the IRP stored in the queue 81 according to the priority set in the IRP and outputs it to the PD_FS 54.

あるいは、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 filter 53 sets a pause flag indicating permission or disapproval of IRP processing corresponding to an access request to the optical disc 3 from the applications 31 to 33. The IRPs from the applications 31 to 33 are stored in the queue 81. Then, the PD filter 53 reads the IRP stored in the queue 81 according to the pause flag and outputs it to the PD_FS 54.

さらに、PDフィルタ53は、キャッシュオン/オフ機能の処理で説明したように、AVアプリケーション33からのIRPについて、キャッシュ機能の利用の有無を設定し、IRPをPD_FS54に出力する際、その設定結果にしたがって、そのIRPを処理する。   Further, as described in the processing of the cache on / off function, the PD filter 53 sets whether to use the cache function for the IRP from the AV application 33, and outputs the IRP to the PD_FS 54 according to the setting result. Therefore, the IRP is processed.

図25は、第3の機能とキャッシュオン/オフ機能とを組み合わせて使用する場合のPDフィルタ53の構成例を示している。   FIG. 25 shows a configuration example of the PD filter 53 when the third function and the cache on / off function are used in combination.

図25においては、PDフィルタ53は、第3の機能の処理で説明したように、AVアプリケーション33以外のアプリケーション、即ち、アプリケーション31および32(のプロセス)からのIRPの、PD_FS54への出力をオン/オフする機能的なスイッチ101を有し、その機能的なスイッチ101を、レジストリ58に記憶されたスイッチ設定情報にしたがってオンまたはオフにすることによって、アプリケーション31および32からのIRPの、PD_FS54への出力を制御する。   In FIG. 25, the PD filter 53 turns on the output to the PD_FS 54 of the IRP from the application other than the AV application 33, that is, the applications 31 and 32 (process thereof), as described in the processing of the third function. The IRP from the applications 31 and 32 to the PD_FS 54 by having the functional switch 101 to / off, and turning the functional switch 101 on or off according to the switch setting information stored in the registry 58 Control the output of.

さらに、PDフィルタ53は、キャッシュオン/オフ機能の処理で説明したように、AVアプリケーション33からのIRPについて、キャッシュ機能の利用の有無を設定し、IRPをPD_FS54に出力する際、その設定結果にしたがって、そのIRPを処理する。   Further, as described in the processing of the cache on / off function, the PD filter 53 sets whether to use the cache function for the IRP from the AV application 33, and outputs the IRP to the PD_FS 54 according to the setting result. Therefore, the IRP is processed.

以上のように、第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 applications 31 and 32 accessing the optical disc 3 is suppressed. Thus, the application 33 can reproduce and record the AV data in real time.

なお、本実施の形態では、データの記録や再生が行われる記録媒体として、光ディスクを採用することとしたが、本発明は、その他、例えば、ハードディスクその他のディスク状の記録媒体などのシークが生じる記録媒体に対してデータの記録や再生を行う場合に適用可能である。   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 PC 1 to perform various processes do not necessarily have to be processed in time series in the order described in the flowchart, and are executed in parallel or individually. Processing to be performed (for example, parallel processing or object processing) is also included.

本発明を適用した情報処理システムの一実施の形態の構成例を示すブロック図である。It is a block diagram which shows the structural example of one Embodiment of the information processing system to which this invention is applied. PC1のハードウェア構成例を示すブロック図である。2 is a block diagram illustrating a hardware configuration example of a PC 1. FIG. CPU12が実行するプログラムを示す図である。It is a figure which shows the program which CPU12 runs. OS30の内部構成例(ファイルシステム)を示すブロック図である。It is a block diagram which shows the internal structural example (file system) of OS30. OS30内で行われる処理の概要を説明するフローチャートである。4 is a flowchart for explaining an overview of processing performed in the OS 30; 第1または第2の機能を実装したPDフィルタ53の構成例を示すブロック図である。It is a block diagram which shows the structural example of PD filter 53 which mounted the 1st or 2nd function. PD_API41が提供するAPI関数を示す図である。It is a figure which shows the API function which PD_API41 provides. IRP_MJ_DEVICE_CONTROLで指定されるユーザ定義のIOCTLを示す図である。It is a figure which shows user-defined IOCTL designated by IRP_MJ_DEVICE_CONTROL. 第1の機能の処理を説明するフローチャートである。It is a flowchart explaining the process of a 1st function. 第1の機能の処理を説明するフローチャートである。It is a flowchart explaining the process of a 1st function. 第1の機能の処理を説明するフローチャートである。It is a flowchart explaining the process of a 1st function. PD_API41が提供するAPI関数を示す図である。It is a figure which shows the API function which PD_API41 provides. IRP_MJ_DEVICE_CONTROLで指定されるユーザ定義のIOCTLを示す図である。It is a figure which shows user-defined IOCTL designated by IRP_MJ_DEVICE_CONTROL. 第2の機能の処理を説明するフローチャートである。It is a flowchart explaining the process of a 2nd function. 第2の機能の処理を説明するフローチャートである。It is a flowchart explaining the process of a 2nd function. 第2の機能の処理を説明するフローチャートである。It is a flowchart explaining the process of a 2nd function. 第3の機能を実装したPDフィルタ53の構成例を示すブロック図である。It is a block diagram which shows the structural example of PD filter 53 which mounted the 3rd function. 第3の機能の処理を説明するフローチャートである。It is a flowchart explaining the process of a 3rd function. キャッシュオン/オフ機能を実装したPDフィルタ53の構成例を示すブロック図である。It is a block diagram which shows the structural example of PD filter 53 which mounted the cache on / off function. PD_API41が提供するAPI関数を示す図である。It is a figure which shows the API function which PD_API41 provides. IRP_MJ_DEVICE_CONTROLで指定されるユーザ定義のIOCTLを示す図である。It is a figure which shows user-defined IOCTL designated by IRP_MJ_DEVICE_CONTROL. キャッシュオン/オフ機能の処理を説明するフローチャートである。It is a flowchart explaining the process of a cache on / off function. キャッシュオン/オフ機能の処理を説明するフローチャートである。It is a flowchart explaining the process of a cache on / off function. 第1または第2の機能のうちのいずれか一方と、キャッシュオン/オフ機能とを組み合わせて使用する場合のPDフィルタ53の構成例を示すブロック図である。It is a block diagram which shows the structural example of PD filter 53 in the case of using either one of a 1st or 2nd function, and a cache on / off function combining. 第3の機能のうちのいずれか一方と、キャッシュオン/オフ機能とを組み合わせて使用する場合のPDフィルタ53の構成例を示すブロック図である。It is a block diagram which shows the structural example of PD filter 53 in the case of using any one of 3rd functions, and a cache on / off function in combination.

符号の説明Explanation of symbols

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 (10)

アプリケーションからの記録媒体へのアクセスの要求であるアクセス要求を処理する情報処理装置において、
前記記録媒体に対する前記アクセス要求に対応する、デバイスドライバに対して要求する処理の情報を有するパケットの処理の許可または不許可を示す許可情報を設定し、設定した前記許可情報にしたがって、特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、他のアプリケーションからの前記アクセス要求に対する前記パケットの処理を停止する状態であるポーズ状態、または、全てのアプリケーションからの前記アクセス要求に対する前記パケットの処理を行う状態であるラン状態を、現在の状態として設定する状態設定手段と、
アプリケーションからの前記アクセス要求に対応する前記パケットを、キューに記憶させるキュー制御手段と、
前記現在の状態が前記ポーズ状態である場合、前記キューに記憶された前記パケットのうちの前記特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、前記現在の状態が前記ラン状態である場合、前記キューに記憶された全ての前記パケットの処理を行うアクセス要求処理手段と
を備えることを特徴とする情報処理装置。
In an information processing apparatus that processes an access request that is a request for access to a recording medium from an application,
Set permission information indicating permission or non-permission of processing of a packet having processing information requested to a device driver corresponding to the access request to the recording medium, and specify a specific application in accordance with the permission information set. said access the corresponding to the request performs a process of the packet, pause state is a state to stop processing the packet that corresponds to the access request from another application, or the access from all the applications from the run state is a state in which the processing of the packet that corresponds to the request, the state setting means for setting as the current state,
Queue control means for storing the packet corresponding to the access request from the application in a queue;
If the current state is the pause state, performs processing of the packet to the correspond to the access request from a specific application of said packet stored in the queue, the current state said run And an access request processing means for processing all the packets stored in the queue when in the state.
前記状態設定手段は、ユーザの操作に応じて、前記ポーズ状態または前記ラン状態を、前記現在の状態として設定する
ことを特徴とする請求項1に記載の情報処理装置。
The information processing apparatus according to claim 1, wherein the state setting unit sets the pause state or the run state as the current state in accordance with a user operation.
キャッシュ機能の利用の有無を設定するキャッシュ機能設定手段をさらに備え、
前記アクセス要求処理手段は、さらに、前記キャッシュ機能設定手段によるキャッシュ機能の利用の有無の設定結果にしたがって、前記アクセス要求に対応する前記パケットの処理行う
ことを特徴とする請求項1に記載の情報処理装置。
It further comprises a cache function setting means for setting whether to use the cache function,
Said access request processing means further in accordance with the cache function setting means by use whether the setting result of the caching, according to claim 1, characterized in that performing the processing of the packet corresponding to the access request Information processing device.
前記アクセス要求処理手段は、前記特定のアプリケーションからの前記アクセス要求に対応する前記パケットの処理のみを、前記キャッシュ機能の利用の有無の設定結果にしたがって行う
ことを特徴とする請求項3に記載の情報処理装置。
Said access request processing unit, according to claim 3, characterized in that the only processing of the packet corresponding to the access request from a specific application, in accordance with the setting result of the presence or absence of use of the cache function Information processing device.
前記アクセス要求に対応する前記パケットをフィルタリングし、ファイルシステムドライバに渡すフィルタドライバである
ことを特徴とする請求項1に記載の情報処理装置。
The information processing apparatus according to claim 1, wherein the information processing apparatus is a filter driver that filters the packet corresponding to the access request and passes the packet to a file system driver.
前記記録媒体に対して読み書きされるデータは、AV(Audio Visual)データを、少なくとも含む
ことを特徴とする請求項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, wherein:
アプリケーションからの記録媒体へのアクセスの要求であるアクセス要求を処理する情報処理方法において、
前記記録媒体に対する前記アクセス要求に対応する、デバイスドライバに対して要求する処理の情報を有するパケットの処理の許可または不許可を示す許可情報を設定し、設定した前記許可情報にしたがって、特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、他のアプリケーションからの前記アクセス要求に対する前記パケットの処理を停止する状態であるポーズ状態、または、全てのアプリケーションからの前記アクセス要求に対する前記パケットの処理を行う状態であるラン状態を、現在の状態として設定する状態設定ステップと、
アプリケーションからの前記アクセス要求に対応する前記パケットを、キューに記憶させるキュー制御ステップと、
前記現在の状態が前記ポーズ状態である場合、前記キューに記憶された前記パケットのうちの前記特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、前記現在の状態が前記ラン状態である場合、前記キューに記憶された全ての前記パケットの処理を行うアクセス要求処理ステップと
を含むことを特徴とする情報処理方法。
In an information processing method for processing an access request that is a request for access to a recording medium from an application,
Set permission information indicating permission or non-permission of processing of a packet having processing information requested to a device driver corresponding to the access request to the recording medium, and specify a specific application in accordance with the permission information set. said access the corresponding to the request performs a process of the packet, pause state is a state to stop processing the packet that corresponds to the access request from another application, or the access from all the applications from the run state is a state in which the processing of the packet that corresponds to the request, the state setting step of setting as the current state,
A queue control step for storing the packet corresponding to the access request from an application in a queue;
If the current state is the pause state, performs processing of the packet to the correspond to the access request from a specific application of said packet stored in the queue, the current state said run And an access request processing step for processing all of the packets stored in the queue when it is in a state.
アプリケーションからの記録媒体へのアクセスの要求であるアクセス要求の処理を、コンピュータに行わせるプログラムにおいて、
前記記録媒体に対する前記アクセス要求に対応する、デバイスドライバに対して要求する処理の情報を有するパケットの処理の許可または不許可を示す許可情報を設定し、設定した前記許可情報にしたがって、特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、他のアプリケーションからの前記アクセス要求に対する前記パケットの処理を停止する状態であるポーズ状態、または、全てのアプリケーションからの前記アクセス要求に対する前記パケットの処理を行う状態であるラン状態を、現在の状態として設定する状態設定ステップと、
アプリケーションからの前記アクセス要求に対応する前記パケットを、キューに記憶させるキュー制御ステップと、
前記現在の状態が前記ポーズ状態である場合、前記キューに記憶された前記パケットのうちの前記特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、前記現在の状態が前記ラン状態である場合、前記キューに記憶された全ての前記パケットの処理を行うアクセス要求処理ステップと
を含むことを特徴とするプログラム。
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,
Set permission information indicating permission or non-permission of processing of a packet having processing information requested to a device driver corresponding to the access request to the recording medium, and specify a specific application in accordance with the permission information set. said access the corresponding to the request performs a process of the packet, pause state is a state to stop processing the packet that corresponds to the access request from another application, or the access from all the applications from the run state is a state in which the processing of the packet that corresponds to the request, the state setting step of setting as the current state,
A queue control step for storing the packet corresponding to the access request from an application in a queue;
If the current state is the pause state, performs processing of the packet to the correspond to the access request from a specific application of said packet stored in the queue, the current state said run And an access request processing step for processing all of the packets stored in the queue when it is in a state.
アプリケーションからの記録媒体へのアクセスの要求であるアクセス要求の処理を、コンピュータに行わせるプログラムが記録されているプログラム記録媒体において、
前記記録媒体に対する前記アクセス要求に対応する、デバイスドライバに対して要求する処理の情報を有するパケットの処理の許可または不許可を示す許可情報を設定し、設定した前記許可情報にしたがって、特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、他のアプリケーションからの前記アクセス要求に対する前記パケットの処理を停止する状態であるポーズ状態、または、全てのアプリケーションからの前記アクセス要求に対する前記パケットの処理を行う状態であるラン状態を、現在の状態として設定する状態設定ステップと、
アプリケーションからの前記アクセス要求に対応する前記パケットを、キューに記憶させるキュー制御ステップと、
前記現在の状態が前記ポーズ状態である場合、前記キューに記憶された前記パケットのうちの前記特定のアプリケーションからの前記アクセス要求に対する前記パケットの処理を行い、前記現在の状態が前記ラン状態である場合、前記キューに記憶された全ての前記パケットの処理を行うアクセス要求処理ステップと
を含むことを特徴とするプログラムが記録されているプログラム記録媒体。
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.
Set permission information indicating permission or non-permission of processing of a packet having processing information requested to a device driver corresponding to the access request to the recording medium, and specify a specific application in accordance with the permission information set. said access the corresponding to the request performs processing of said packet, pause state, in that stop processing of the packet that corresponds to the access request from another application, or the access from all the applications from the run state is a state in which the processing of the packet that corresponds to the request, the state setting step of setting as the current state,
A queue control step for storing the packet corresponding to the access request from an application in a queue;
If the current state is the pause state, performs processing of the packet to the correspond to the access request from a specific application of said packet stored in the queue, the current state said run And an access request processing step for processing all the packets stored in the queue when in a state. A program recording medium on which a program is recorded.
JP2004119853A 2004-04-15 2004-04-15 Information processing apparatus, information processing method, program, and program recording medium Expired - Fee Related JP4232678B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004119853A JP4232678B2 (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

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004119853A JP4232678B2 (en) 2004-04-15 2004-04-15 Information processing apparatus, information processing method, program, and program recording medium

Publications (2)

Publication Number Publication Date
JP2005302221A JP2005302221A (en) 2005-10-27
JP4232678B2 true JP4232678B2 (en) 2009-03-04

Family

ID=35333514

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004119853A Expired - Fee Related JP4232678B2 (en) 2004-04-15 2004-04-15 Information processing apparatus, information processing method, program, and program recording medium

Country Status (1)

Country Link
JP (1) JP4232678B2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647455B2 (en) 2004-04-15 2010-01-12 Sony Corporation Information processing apparatus and method, program, and program recording medium
JP4952355B2 (en) * 2007-04-23 2012-06-13 パナソニック株式会社 Information processing device
JP4634477B2 (en) * 2008-03-07 2011-02-16 レノボ・シンガポール・プライベート・リミテッド Media file playback without interruption
JP5976024B2 (en) * 2014-01-23 2016-08-23 三菱電機株式会社 Playback apparatus, control method, and control program

Also Published As

Publication number Publication date
JP2005302221A (en) 2005-10-27

Similar Documents

Publication Publication Date Title
KR101125929B1 (en) Information processing apparatus and method, and program recording medium
US7769920B2 (en) Information processing apparatus, information processing method, and program and recording medium used therewith
JP2010102715A (en) Large block allocation for disk-based file system
JP2001517836A (en) System and method for performing predetermined actions when porting a namespace of one storage medium to a namespace of another storage medium
JP4227931B2 (en) Information storage device, information storage method, and information storage processing program
JP4634477B2 (en) Media file playback without interruption
JP4160139B2 (en) Information recording / reproducing device
US7000077B2 (en) Device/host coordinated prefetching storage system
JP4232678B2 (en) Information processing apparatus, information processing method, program, and program recording medium
JP4345559B2 (en) Information processing apparatus, information processing method, program, and program recording medium
JP2004102701A (en) Information processor, information processing method, program, and storage medium
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
JP2001290607A (en) Command queuing control method for device driver and computer system
JP3857039B2 (en) Image mastering API
US20040126103A1 (en) Method and apparatus for data access in a video recorder with a disk drive
JP2000227866A (en) Information recording and reproducing device
JP3585466B2 (en) Multi-track recorder
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
KR20020001623A (en) Recording and reproduction apparatus, medium and information assembly
JP2000187558A (en) Server device and storage device
JPH05181749A (en) Auxiliary storage device and its accessing method

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070808

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070829

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071002

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080311

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080512

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080521

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: 20081118

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: 20081201

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121219

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121219

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131219

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees