CreateFile(API)でオブジェクトの作成または開く


オブジェクトを作成、または、開いて、
そのオブジェクトのアクセスに利用できるハンドルを返す。

[オブジェクトの種類]
    ・コンソール
    ・通信リソース
    ・ディレクトリ(開くだけ)
    ・ディスク・デバイス(Windows 95/98/Meを除く)
    ・ファイル
    ・メールスロット
    ・パイプ

【式】

    HANDLE CreateFile(LPCTSTR lpPathName,
                      DWORD dwDesiredAccess,
                      DWORD dwShareMode,
                      LPSECURITY_ATTRIBUTES lpSecurityAttributes,
                      DWORD dwCreationDisposition,
                      DWORD dwFlagsAndAttributes,
                      HANDLE hTemplateFile);

【引数】

    lpPathName :
        作成または開くオブジェクト名

    dwDesiredAccess :
        オブジェクトへのアクセス・タイプ

内容
0デバイスの問い合わせ
GENERIC_READ読み取り
GENERIC_WRITE書き込み
また、以下のフラグも設定可能 DELETE, READ_CONTROL, WRITE_DAC, WRITE_OWNER, SYNCHRONIZE, STANDARD_RIGHTS_REQUIRED, STANDARD_RIGHTS_READ, STANDARD_RIGHTS_WRITE, STANDARD_RIGHTS_EXECUTE STANDARD_RIGHTS_ALL, SPECIFIC_RIGHTS_ALL, MAXIMUM_ALLOWED, GENERIC_READ, GENERIC_WRITE, GENERIC_EXECUTE, GENERIC_ALL dwShareMode : 共有方法の設定
定数内容
FILE_SHARE_DELETE削除
FILE_SHARE_READ読み取り
FILE_SHARE_WRITE書き込み
lpSecurityAttributes : セキュリティ設定 NULL = デフォルトのセキュリティが設定される dwCreationDisposition : ファイルの扱い方を設定
定数内容
CREATE_NEW新規ファイル作成。
指定ファイルが存在する場合は、関数失敗
CREATE_ALWAYS新規ファイル作成。
指定ファイルが存在する場合は、上書き
OPEN_EXISTING既存のファイルを開く。
指定ファイルが存在しない場合、関数失敗
OPEN_ALWAYSファイルを開く。
指定ファイルが存在しない場合、新規作成
TRUNCATE_EXISTINGファイルを開き、サイズを0にする。
指定ファイルが存在しない場合、関数失敗
dwFlagsAndAttributes : ファイルの属性とフラグ ---属性---
定数内容
FILE_ATTRIBUTE_ARCHIVEアーカイブ
FILE_ATTRIBUTE_ENCRYPTED暗号化
FILE_ATTRIBUTE_HIDDEN隠しファイル
FILE_ATTRIBUTE_NORMAL設定なし
FILE_ATTRIBUTE_NOT_CONTENT_INDEXEDインデックスサービスの対象にしない
FILE_ATTRIBUTE_READONLY読み取り専用
FILE_ATTRIBUTE_SYSTEMオペレーティングシステム専用
FILE_ATTRIBUTE_TEMPORARY一時ファイル
---フラグ---
定数内容
FILE_FLAG_WRITE_THROUGHキャッシュに書き込まれたデータを直接ディスクに書き込む
FILE_FALG_OVERLAPPEDオブジェクトを初期化
FILE_FLAG_NO_BUFFERINGバッファ、キャッシュを使わないでファイルを開く
FILE_FLAG_RANDOM_ACCESSファイルをランダムアクセス
FILE_FLAG_SEQUENTIAL_SCANシーケンシャルにファイルをアクセス
FILE_FLAG_DELETE_ON_CLOSEハンドルを閉じると同時にファイルを削除
FILE_FLAG_BACKUP_SEMANTICSバックアップ、復元操作の目的でのファイル作成または開く
FILE_FLAG_POSIX_SEMANTICSPOSIX(UNIXベースのポータブルOS)のファイルをアクセス
FILE_FLAG_OPEN_REPARSE_POINTNTFSの再解析ポイントで再解析を実施することを禁止
FILE_FLAG_OPEN_NO_RECALLファイルのデータを継続的にリモート記憶域に配置
hTemplateFile : テンプレート・ファイルのハンドル 【戻り値】 成功 : オブジェクトのハンドル 失敗 : INVALID_HANDLE_VALUE 【サンプル】 //CreateFileを使用したオブジェクトの作成または開く void CCreateFileDlg::OnButton1() { HANDLE hFile; hFile = CreateFile("C:\\temp\\test.txt", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(hFile == INVALID_HANDLE_VALUE)AfxMessageBox("CreateFile関数が失敗しました"); //ハンドルを閉じる CloseHandle(hFile); } [サンプル・プロジェクト] (注意) このサンプルは、Visual C++ 6.0で作成されています。 また、詳細に付いてはMSDNを参照して下さい。