使ってファイルの書き込みや読み取りをしてみたいと思います。できるのに、なぜそんな面倒っちいことを」などとも思うかもしれませんが、まあ、いずれ必要になることですので。今回はいろいろと前知識が必要になります。それらから説明することにしましょう。ファイルオブジェクトとハンドルファイル操作をする際にまずファイルを開く(オープンする)ということをしなくてはなりません。Windows上では、データアクセスするためにオープンされたファイルは、カーネルオブジェクトの1つである『ファイルオブジェクト』として扱われます。ファイルがオープンされると、メモリ上にファイルオブジェクトが作成され、そのオブジェクトを識別する値として、ファイルオブジェクトのハンドルが返されます。このハンドルはファイルハンドルとも呼ばれます。ファイル操作を行なうにはこのハンドルを用いて各種API関数を呼び出すことになります。Windowsオブジェクトおよびハンドルについては、『共有メモリを使ってみる』の項を参照してください。実際の読み書きの際には、ファイルオブジェクトがどのアクセスを持っているかということが重要になります。適切なアクセス指定によって作成されたファイルオブジェクトのハンドルを指定しないと、目的となるファイルアクセスを行なうことができなくなってしまいます。ファイルからデータを読み取りたい場合には、ファイルオブジェクトが読み取りアクセスを持っていなければなりませんし、ファイルにデータを書き込みたい場合には読み取りアクセスを持っていなければなりません。読み取りアクセスを持たない場合には、たとえ書き込みアクセスを持っていてもデータを読み取ることができません。ファイルポインタAPIを使ってファイルの読み書きを行なう場合、ファイルポインタと呼ばれるものが使われます。ファイルポインタとは、現在読み書きしている位置をバイト単位で表したインデックスのことで、ファイルオブジェクトごとに内部で保持されています。通常、ファイルへの読み書きを行なうと、そのサイズぶんだけファイルポインタが自動的に移動して、次回読み書き時にはそのファイルポインタの位置から読み書きが行なわれます。シーケンシャル処理とランダム処理ファイル処理の方法にはシーケンシャルファイル処理(シーケンシャルアクセス)とランダムファイル処理(ランダムアクセス)の2種類の方法があります。シーケンシャルファイル処理とは、ファイルの前回の読み書き部分に続いて次の読み書きを行なう、というものです。基本的には、ファイルの先頭からファイルの終わりまでを連続的に書き込みあるいは読み取りしていきます。ファイルに10バイトずつ並んでいるデータを順番に読み込んで処理する、といった場合の方法です。ランダムファイル処理とは、ファイルを読み書きする際に、ファイルのどの位置を読み書きするかを指定するものです。ファイルポインタの位置を指定してから読み書きを行なう、ということになります。命令で行なわれる処理はこのランダム処理になります。命令だけで済んでしまうことなのですが、これをAPIで実現するにはかなりの手間がかかります。基本的な手順としては以下のようになります。関数で既存のファイルをオープン(または新しいファイルを作成)し、そのファイルオブジェクトのハンドルを取得する。関数でファイルポインタを移動させる。関数でファイルに書き込む。関数でファイルからデータを読み込む。関数でファイルハンドルをクローズする。パラメータにはファイル名を表す文字列のアドレスを指定します。パラメータには、アクセス指定子を指定します。