CreateFile2

ファイルまたは I/O デバイスを作成または開く。

CreateFile2 lpFileName, dwDesiredAccess, dwShareMode, dwCreationDisposition, pCreateExParams

lpFileName : [wstr] 作成または開くファイルまたはデバイスの名前。特殊なデバイス名については Defining an MS-DOS Device Name を参照。ファイルストリームを作成するには、ファイル名、コロン、ストリーム名の順に指定する。詳細は File Streams を参照。ヒント: Windows 10 バージョン 1607 以降、"\\?\" を前置せずに MAX_PATH 制限を取り除くことにオプトインできる。詳細は Naming Files, Paths, and Namespaces の "Maximum Path Length Limitation" セクションを参照。
dwDesiredAccess : [int] ファイルまたはデバイスに対する要求アクセス。読み取り、書き込み、両方、またはどちらでもない (ゼロ) にまとめられる。最も一般的に使われる値は GENERIC_READ、GENERIC_WRITE、またはその両方 (GENERIC_READ | GENERIC_WRITE) である。詳細は Generic Access Rights、File Security and Access Rights、File Access Rights Constants、ACCESS_MASK を参照。このパラメータがゼロの場合、アプリケーションは GENERIC_READ アクセスが拒否されるような場合であっても、ファイル、ディレクトリ、デバイスの属性などの特定のメタデータをアクセスせずに問い合わせることができる。開いているハンドルを持つ既存の open 要求で指定された共有モードと競合するアクセスモードを要求することはできない。詳細はこのトピックの備考および Creating and Opening Files を参照。
dwShareMode : [int] ファイルまたはデバイスの要求共有モード。読み取り、書き込み、両方、削除、これらすべて、またはどれでもない(以下の表を参照)が指定できる。属性または拡張属性へのアクセス要求はこのフラグの影響を受けない。このパラメータがゼロで CreateFile2 が成功した場合、ファイルまたはデバイスは共有できず、ハンドルが閉じられるまで再度開けない。詳細は備考を参照。開いているハンドルを持つ既存の要求で指定されたアクセスモードと競合する共有モードを要求することはできない。CreateFile2 は失敗し、GetLastError 関数は ERROR_SHARING_VIOLATION を返す。別プロセスがファイルやデバイスを開いている間に共有を有効にするには、
dwCreationDisposition : [int] 存在するか存在しないファイルまたはデバイスに対して行う動作。ファイル以外のデバイスでは、このパラメータは通常 OPEN_EXISTING に設定する。詳細は備考を参照。
pCreateExParams : [var] 省略可能な CREATEFILE2_EXTENDED_PARAMETERS 構造体へのポインタ。

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

解説

ファイルまたは I/O デバイスを作成または開く。

[戻り値]

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

[備考]
CreateFile2 関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNT マクロを 0x0602
以降として定義する。詳細は Using the Windows Headers を参照。CreateFile2 は Windows
開発者が利用できるほとんどの種類の I/O
デバイスや仕組みと、ファイルの相互作用をサポートする。このセクションでは、異なるコンテキストや異なる I/O タイプで
CreateFile2
を使用する際に開発者が経験する可能性のあるさまざまな問題を扱う。本文では、ファイルという語は実際のファイルシステム上のファイルに格納されたデータを指す場合にのみ使用するよう努めているが、歴史的な理由によって定数名やパラメータ名ではファイル様の仕組みをサポートする
I/O オブジェクト全般を指してファイルという語が使われることもある。アプリケーションが CreateFile2
から返されたオブジェクトハンドルを使い終えたら、CloseHandle
関数を使ってハンドルを閉じる。これはシステムリソースを解放するだけでなく、ファイルやデバイスの共有やディスクへのデータのコミットなどに広く影響する。具体的な詳細はこのトピック内で必要に応じて記述される。NTFS
ファイルシステムのような一部のファイルシステムは個々のファイルとディレクトリの圧縮または暗号化をサポートしている。そのようなファイルシステムがマウントされたボリュームでは、新しいファイルは親ディレクトリの圧縮と暗号化の属性を継承する。CreateFile2
を使ってファイルやディレクトリの圧縮、解凍、復号化を制御することはできない。詳細は Creating and Opening
Files、File Compression and Decompression、File Encryption
を参照。pCreateExParams パラメータに渡された CREATEFILE2_EXTENDED_PARAMETERS 構造体の
lpSecurityAttributes メンバーが NULL の場合、CreateFile2
から返されたハンドルはアプリケーションが作成する子プロセスに継承されない。このメンバーに関する以下の情報も適用される:
(以下省略)

情報

プラグイン / モジュール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