Win32API: CreateFile

ファイル(パイプ、メールスロット、通信ポートなども含む)の作成、またはオープンをします。


定義
Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" _
         (lpFileName As BytePtr, _
          dwDesiredAccess As DWord, _
          dwShareMode As DWord, _
    ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, _
          dwCreationDisposition As DWord, _
          dwFlagsAndAttributes As DWord, _
          hTemplateFile As DWord) As DWord
lpFileName
ファイルパスを文字列で指定します。

dwDesiredAccess
アクセスの種類を指定します。以下に示す値を利用します。GENERIC_READ、GENERIC_WRITEは組み合わせて利用することもできます。
説明
0デバイスの属性を問い合わせます。
GENERIC_READ読み取りアクセスです。
GENERIC_WRITE書き込みアクセスです。

dwShareMode
ファイルの共有権を設定します。以下の値を利用します。0 を指定するとファイルは共有されません。
定数説明
FILE_SHARE_DELETE削除アクセスが要求された場合、そのオープンを許可します(WindowsNT系OSのみ)。
FILE_SHARE_READ読み取りアクセスが要求された場合、そのオープンを許可します。
FILE_SHARE_WRITE書き込みアクセスが要求された場合、そのオープンを許可します。

lpSecurityAttributes (ポインタ参照)
SECURITY_ATTRIBUTES 型の構造体変数を指定すると、ハンドルの子プロセスへの継承許可を設定することができます。NULL を指定するとハンドルは継承されません。
Windows9x系OSでは、SECURITY_ATTRIBUTES 構造体の lpSecurityDescriptor メンバは無視されます。

dwCreationDisposition
ファイル オープンに伴うファイルへの動作を、以下の定数を用いて指定します。
定数説明
CREATE_NEW新しいファイルを作成します。ファイルがすでに存在していると、関数は失敗します。
CREATE_ALWAYS新しいファイルを作成します。ファイルがすでに存在していると、そのファイルは上書きされます。
OPEN_EXISTINGファイルをオープンします。ファイルが存在しない場合、関数は失敗します。
OPEN_ALWAYSファイルをオープンします。ファイルが存在しない場合、新しいファイルを作成します。
TRUNCATE_EXISTINGファイルをオープンし、ファイル サイズを 0 バイトにします。ファイルが存在しない場合、関数は失敗します。このフラグを指定する場合は書き込みアクセスの権限(GENERIC_WRITE)が必要です。

dwFlagsAndAttributes
ファイル属性、およびフラグを指定します。以下の定数を組み合わせて指定します。
ファイル属性の定数説明
FILE_ATTRIBUTE_ARCHIVEアーカイブ ファイルです。
FILE_ATTRIBUTE_COMPRESSED圧縮ファイルです。
FILE_ATTRIBUTE_HIDDEN隠しファイルです。
FILE_ATTRIBUTE_NORMAL属性を持たない、ノーマルなファイルです。この定数は単独で使用します。
FILE_ATTRIBUTE_OFFLINEファイル データが別のオフラインの記憶装置に移されていることを示します。
FILE_ATTRIBUTE_READONLY読み取り専用ファイルです。
FILE_ATTRIBUTE_SYSTEMオペレーティング システムのシステム ファイルです。
FILE_ATTRIBUTE_TEMPORARY一時ファイルです。
フラグ定数説明
FILE_FLAG_WRITE_THROUGHディスク キャッシュに書き込まれたデータを、そのままディスクに書き込むようにします。
FILE_FLAG_OVERLAPPED時間のかかる処理に対して、ERROR_IO_PENDING を返すようにします。このフラグを指定すると、ReadFile関数、WriteFile関数を呼び出す際に、OVERLAPPED 構造体を指定しなければなりません。
FILE_FLAG_NO_BUFFERINGバッファやキャッシュを利用せずにファイルをオープンします。ファイルアクセスの開始オフセット、アクセス バイト数、読み書き操作用のバッファ アドレスを、ボリュームのセクタサイズの整数倍にしなければなりません。
FILE_FLAG_RANDOM_ACCESSファイルをランダム アクセスすることを示します。事前にこのフラグを指定しておくと、パフォーマンスが向上する可能性があります。
FILE_FLAG_SEQUENTIAL_SCANファイルをシーケンシャル アクセスすることを示します。
FILE_FLAG_DELETE_ON_CLOSEファイル ハンドルがクローズされたら、そのファイルを削除するようにします。
FILE_FLAG_BACKUP_SEMANTICSバックアップ、または復元操作のために、ファイルをオープンします(WindowsNT系OSのみ)。
FILE_FLAG_POSIX_SEMANTICSPOSIX の規則に従ってファイル アクセスを行います。

hTemplateFile
テンプレート ファイルを示す、GENERIC_READ 権を持つハンドルを指定します(WindowsNT系OSのみ)。テンプレート ファイルはファイル作成の際にファイル属性と拡張属性を提供します。このパラメータを利用しない場合は 0 を指定して下さい。Windows9x系OSでは常に 0 を指定して下さい。

戻り値

関数が成功すると、ファイルのハンドルが返ります。失敗すると、INVALID_HANDLE_VALUE が返ります。

※拡張エラー情報は、GetLastError関数で取得できます。

解説

ファイルをクローズするには、CloseHandle関数を使用して下さい。
CreateFile関数を使ってディレクトリを作成することはできません。ディレクトリの作成はCreateDirectory関数を使用して下さい。

環境情報

インクルード ファイル: api_system.sbp 内で定義済み
DLLファイル: kernel32.dll


SetFilePointer関数ReadFile関数WriteFile関数CloseHandle関数