CreateFile関数の完全ガイド(かなり詳細です)
CreateFile関数とは、Windowsオペレーティングシステムにおいてファイルまたはデバイスを作成または開くために使用される関数であり、以下にその詳細な説明を示します。
関数のプロトタイプ:
ネイティブな日本語の言い回しでは、HANDLE CreateFile(
LPCSTR lpFileName
dwDesiredAccess
DWORD dw共用モード
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
作成方法
DWORD dwFlagsAndAttributes;
ネイティブハンドルの テンプレートファイル
もうお出かけのご予定がありますか。
引数の詳細
- ファイルまたはデバイスの作成または開くための名前です。文字列かファイルパスにすることができます。
- dwDesiredAccess:ファイルまたはデバイスに行われるアクセス権限を指定します。次の定数のいずれかを指定します。
- ファイルを読み取ることができます。
- 書き込み可能なファイル
- GENERIC_EXECUTE: 実行可能ファイル。
- ファイルの読み取り、書き込み、および実行が可能です。
- ファイルの読み書きなどの他の専用パーミッション定数
- dwShareMode: 他のプロセスがファイルまたはデバイスにアクセスする方法。以下の定数を使用できます。
- FILE_SHARE_READ:そのファイルを他のプロセスに読み取り可能にする
- 他のプロセスはそのファイルへの書き込みが可能になる
- FILE_SHARE_DELETE:他のプロセスによるファイルの削除を許可
- このファイルへの他のプロセスからのアクセスを禁止する。
- lpSecurityAttributes: ファイルやデバイスのセキュリティ属性を指定します。何も指定しない場合、デフォルトのセキュリティ属性が使用されます。
- dwCreationDisposition:ファイルまたはデバイスの作成方法を指定します。次の値のいずれかを指定できます。
- CREATE_NEW:ファイルが存在しない場合のみ作成し、ファイルが存在する場合作成は失敗する。
- 常に作成:新しいファイルを生成し、ファイルが存在する場合は上書きする。
- OPEN_EXISTING: 既存ファイルを開きます。ファイルが存在しない場合はオープンに失敗します。
- OPEN_ALWAYS:既存のファイルをオープンします。ファイルが存在しない場合は、新規ファイルを作成します。
- TRUNCATE_EXISTING:既存ファイルをゼロ長に切り詰め。
- dwFlagsAndAttributes:ファイルやデバイスの属性とフラグを指定します。次の値のいずれかまたはその組み合わせを使用できます。
- FILE_ATTRIBUTE_NORMAL: 通常のファイル属性。
- FILE_FLAG_WRITE_THROUGH:データをファイルに書き込んだ直後に、ディスクキャッシュを経由せずにディスクに転送します。
- FILE_FLAG_OVERLAPPED:非同期 I/O を有効にする。
- ファイルが閉じられたときにファイルを削除する:FILE_FLAG_DELETE_ON_CLOSE
- FILE_ATTRIBUTE_HIDDEN、FILE_FLAG_SEQUENTIAL_SCAN などの他のファイル属性やフラグ定数
- 通常は NULL となる、ファイルハンドルを指定し、新しいファイルと属性を共有するファイルハンドル
返り値:
関数が成功すると、作成またはオープンされたファイルやデバイスへのハンドルを返します。関数が失敗した場合、INVALID_HANDLE_VALUE を返します。
CreateFile関数を用いると、ディスクファイル、シリアルポート、プリンターなど各種ファイルやデバイスを作成またはオープンすることができます。この関数は柔軟な引数オプションを備えており、必要に応じてアクセス権、共有方法、作成方法、ファイル属性を設定できます。ファイルを作成またはオープンした後は、返されたハンドルを使用して、読み取り、書き込み、クローズなどの操作を実行できます。