CreateFileW

ファイルまたは I/O デバイスを作成または開く。よく使われる I/O デバイスはファイル、ファイルストリーム、ディレクトリ、物理ディスク、ボリューム、コンソールバッファ、テープドライブ、通信リソース、メールスロット、パイプなど。(Unicode)

CreateFileW lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile

lpFileName : [wstr] 作成または開くファイルまたはデバイスの名前。スラッシュ(/)とバックスラッシュ(\\)のどちらも使用可能。ANSI 版では MAX_PATH 文字に制限される。Unicode 版で 32,767 文字まで拡張するには "\\?\" をパスに付加する。ファイルストリームを作成するには、ファイル名:ストリーム名 を指定する。
dwDesiredAccess : [int] 要求するファイルまたはデバイスへのアクセス。読み取り、書き込み、両方、または 0。最もよく使われる値は GENERIC_READ、GENERIC_WRITE、またはその組み合わせ。0 の場合、アプリケーションはファイル/ディレクトリ/デバイスの属性などのメタデータを参照できる。dwShareMode と競合するアクセスモードは要求できない。
dwShareMode : [int] 要求するファイルまたはデバイスの共有モード。読み取り、書き込み、両方、削除、全部、またはなし。0 で成功した場合、ハンドルを閉じるまでファイル/デバイスは共有できず再オープンできない。既存ハンドルのアクセスモードと競合する共有モードを要求するとエラー(ERROR_SHARING_VIOLATION)。
lpSecurityAttributes : [var] SECURITY_ATTRIBUTES 構造体へのポインタ。オプションのセキュリティ記述子と、返されたハンドルが子プロセスに継承可能かを決定する Boolean 値の 2 つのメンバを持つ。NULL の場合、ハンドルは継承されず、ファイル/デバイスには既定のセキュリティ記述子が割り当てられる。既存ファイル/デバイスを開く場合、CreateFile は lpSecurityDescriptor を無視する。
dwCreationDisposition : [int] ファイルまたはデバイスに対して、存在する場合および存在しない場合に取るアクション。ファイル以外のデバイスでは通常 OPEN_EXISTING を指定する。詳細は Remarks セクション参照。
dwFlagsAndAttributes : [int] ファイルまたはデバイスの属性およびフラグ。ファイルの場合、最も一般的な既定値は FILE_ATTRIBUTE_NORMAL。FILE_ATTRIBUTE_* とFILE_FLAG_* の任意の組み合わせ、および SECURITY_SQOS_PRESENT フラグによる SQOS 情報を含めることができる。既存ファイルを開く場合、一般に既存ファイルの属性とフラグが組み合わせられ、ここで指定した属性は無視される。
hTemplateFile : [intptr] GENERIC_READ アクセス権を持つテンプレートファイルへの有効なハンドル。テンプレートファイルは作成されるファイルのファイル属性と拡張属性を提供する。NULL を指定可能。既存ファイルを開く場合は無視される。新しい暗号化ファイルを開く場合、ファイルは親ディレクトリの DACL を継承する。

(プラグイン / モジュール : kernel32.dll)

解説

ファイルまたは I/O デバイスを作成または開く。よく使われる I/O
デバイスはファイル、ファイルストリーム、ディレクトリ、物理ディスク、ボリューム、コンソールバッファ、テープドライブ、通信リソース、メールスロット、パイプなど。(Unicode)

[戻り値]
関数が成功した場合、戻り値は指定したファイル、デバイス、名前付きパイプ、メールスロットへのオープンハンドル。失敗した場合は
INVALID_HANDLE_VALUE。拡張エラー情報は GetLastError で取得する。

[備考]
CreateFile は元々ファイル操作用に開発されたが、多くの I/O
デバイスや機構に対応するよう拡張された。オブジェクトハンドルの使用が終わったら CloseHandle
でハンドルを閉じること。これによりシステムリソースが解放され、ファイル共有やディスクへのコミットなどにも影響する。NTFS
ファイルシステムでは新しいファイルはディレクトリの圧縮・暗号化属性を継承する。CreateFile ではこれらを直接制御できない。
(以下省略)

サンプル逆引き (2)

file_watch.hsp
named_pipe.hsp

情報

プラグイン / モジュールkernel32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs