次の方法で共有


CreateFile2 関数 (fileapi.h)

ファイルまたは I/O デバイスを作成または開きます。 最も一般的に使用される I/O デバイスは、ファイル、ファイル ストリーム、ディレクトリ、物理ディスク、ボリューム、コンソール バッファー、テープ ドライブ、通信リソース、mailslot、パイプです。 この関数は、ファイルまたはデバイス、および指定されたフラグと属性に応じて、さまざまな種類の I/O のファイルまたはデバイスにアクセスするために使用できるハンドルを返します。

Windows ストア アプリから呼び出すと、CreateFile2 簡略化されます。 ApplicationData.LocalFolder または Package.InstalledLocation ディレクトリ 内のファイルまたはディレクトリのみを開くことができます。 名前付きパイプまたは mailslots を開いたり、暗号化されたファイル (FILE_ATTRIBUTE_ENCRYPTED) を作成したりすることはできません。

ここでは、アプリのローカル フォルダーとパッケージのインストール場所を参照します。リソース パッケージなど、パッケージ グラフ内の追加パッケージは参照しません。 CreateFile2 では、パッケージ グラフ内の追加パッケージでファイルを開く機能はサポートされていません。 たとえば、アプリが WinJSに依存するとします。 アプリは、CreateFile2 を呼び出してパッケージ内のファイルを開くことができますが、WinJS パッケージでは開く必要はありません。
 
この操作をトランザクション操作として実行し、トランザクション I/O に使用できるハンドルを作成するには、CreateFileTransacted 関数を使用します。

構文

HANDLE CreateFile2(
  [in]           LPCWSTR                           lpFileName,
  [in]           DWORD                             dwDesiredAccess,
  [in]           DWORD                             dwShareMode,
  [in]           DWORD                             dwCreationDisposition,
  [in, optional] LPCREATEFILE2_EXTENDED_PARAMETERS pCreateExParams
);

パラメーター

[in] lpFileName

作成または開くファイルまたはデバイスの名前。

特殊なデバイス名の詳細については、「MS-DOS デバイス名の定義」を参照してください。

ファイル ストリームを作成するには、ファイルの名前、コロン、ストリームの名前を指定します。 詳細については、「ファイル ストリームの」を参照してください。

ヒント Windows 10 バージョン 1607 以降では、事前に "\\?\" を指定せずに MAX_PATH 制限を削除することをオプトインできます。 詳細については、「名前付けファイル、パス、および名前空間の」の「パスの最大長制限」セクションを参照してください。
 

[in] dwDesiredAccess

ファイルまたはデバイスへの要求されたアクセス。読み取り、書き込み、両方、またはゼロとして要約できます)。

最も一般的に使用される値は、GENERIC_READGENERIC_WRITE、またはその両方 (GENERIC_READ | GENERIC_WRITE) です。 詳細については、「汎用アクセス権ファイル セキュリティとアクセス権のファイル アクセス権限定数、および ACCESS_MASKを参照してください。

このパラメーターが 0 の場合、アプリケーションは、そのファイルまたはデバイスにアクセスしなくても、ファイル、ディレクトリ、デバイス属性などの特定のメタデータ GENERIC_READ クエリを実行できます。

既に開いているハンドルを持つオープン要求で、dwShareMode パラメーターで指定された共有モードと競合するアクセス モードを要求することはできません。

詳細については、このトピックの「解説」セクションと ファイルの作成と開くを参照してください。

[in] dwShareMode

ファイルまたはデバイスの要求された共有モード。読み取り、書き込み、両方、削除、これらすべて、またはなしを指定できます (次の表を参照)。 属性または拡張属性へのアクセス要求は、このフラグの影響を受けません。

このパラメーターが 0 で、CreateFile2 成功した場合、ファイルまたはデバイスのハンドルが閉じられるまで、ファイルまたはデバイスを共有できず、再度開くことはできません。 詳細については、「解説」セクションを参照してください。

開いているハンドルを持つ既存の要求で指定されているアクセス モードと競合する共有モードを要求することはできません。 CreateFile2 は失敗し、GetLastError 関数は ERROR_SHARING_VIOLATIONを返します。

別のプロセスがファイルまたはデバイスを開いている間にプロセスでファイルまたはデバイスを共有できるようにするには、次の値の 1 つ以上の互換性のある組み合わせを使用します。 このパラメーターと dwDesiredAccess パラメーターの有効な組み合わせの詳細については、「ファイルの作成と開く」を参照してください。

開いている各ハンドルの共有オプションは、プロセス コンテキストに関係なく、そのハンドルが閉じられるまで有効です。
 
価値 意味
0
0x00000000
他のプロセスが削除、読み取り、または書き込みアクセスを要求した場合に、他のプロセスがファイルまたはデバイスを開かないようにします。 ファイルまたはディレクトリへの排他アクセス権は、アプリケーションがファイルへの書き込みアクセス権を持っている場合にのみ付与されます。
FILE_SHARE_DELETE
0x00000004
ファイルまたはデバイスに対する後続のオープン操作で、削除アクセスを要求できるようにします。

それ以外の場合、削除アクセスを要求した場合、他のプロセスはファイルまたはデバイスを開くことができません。

このフラグが指定されていないが、ファイルまたはデバイスが削除アクセスのために開かれている場合、関数は失敗します。

メモ 削除アクセスでは、削除操作と名前変更操作の両方が許可されます。
 
FILE_SHARE_READ
0x00000001
ファイルまたはデバイスに対する後続のオープン操作で読み取りアクセスを要求できるようにします。

それ以外の場合、他のプロセスが読み取りアクセスを要求した場合、ファイルまたはデバイスを開くことができません。

このフラグが指定されていないが、ファイルまたはデバイスが読み取りアクセスのために開かれている場合、関数は失敗します。

ファイルまたはディレクトリを開き、このフラグを指定せず、呼び出し元がファイルまたはディレクトリへの書き込みアクセス権を持っていない場合、関数は失敗します。

FILE_SHARE_WRITE
0x00000002
ファイルまたはデバイスに対する後続のオープン操作で書き込みアクセスを要求できるようにします。

それ以外の場合、書き込みアクセスを要求した場合、他のプロセスはファイルまたはデバイスを開くことができません。

このフラグが指定されていないが、ファイルまたはデバイスが書き込みアクセスのために開かれているか、書き込みアクセス権を持つファイル マッピングがある場合、関数は失敗します。

[in] dwCreationDisposition

存在する、または存在しないファイルまたはデバイスに対して実行するアクション。

ファイル以外のデバイスの場合、通常、このパラメーターは OPEN_EXISTINGに設定されます。

詳細については、「解説」セクションを参照してください。

このパラメーターは、組み合わせることができない次のいずれかの値である必要があります。

価値 意味
CREATE_ALWAYS
2
常に新しいファイルを作成します。

指定したファイルが存在し、書き込み可能な場合、関数はファイルを切り捨て、関数は成功し、最後のエラー コードは ERROR_ALREADY_EXISTS (183) に設定されます。

指定したファイルが存在せず、有効なパスである場合は、新しいファイルが作成され、関数が成功し、最後のエラー コードが 0 に設定されます。

詳細については、このトピックの「解説」セクションを参照してください。

CREATE_NEW
1
まだ存在しない場合にのみ、新しいファイルを作成します。

指定したファイルが存在する場合、関数は失敗し、最後のエラー コードは ERROR_FILE_EXISTS (80) に設定されます。

指定したファイルが存在せず、書き込み可能な場所への有効なパスである場合は、新しいファイルが作成されます。

OPEN_ALWAYS
4
常にファイルを開きます。

指定したファイルが存在する場合、関数は成功し、最後のエラー コードは ERROR_ALREADY_EXISTS (183) に設定されます。

指定したファイルが存在せず、書き込み可能な場所への有効なパスである場合、関数はファイルを作成し、最後のエラー コードを 0 に設定します。

OPEN_EXISTING
3
ファイルまたはデバイスが存在する場合にのみ開きます。

指定したファイルまたはデバイスが存在しない場合、関数は失敗し、最後のエラー コードは ERROR_FILE_NOT_FOUND (2) に設定されます。

デバイスの詳細については、「解説」セクションを参照してください。

TRUNCATE_EXISTING
5
ファイルを開き、サイズが 0 バイトになるように切り捨てます(存在する場合のみ)。

指定したファイルが存在しない場合、関数は失敗し、最後のエラー コードは ERROR_FILE_NOT_FOUND (2) に設定されます。

呼び出し元のプロセスでは、dwDesiredAccess パラメーターの一部として GENERIC_WRITE ビットが設定されたファイルを開く必要があります。

[in, optional] pCreateExParams

省略可能な CREATEFILE2_EXTENDED_PARAMETERS 構造体へのポインター。

戻り値

関数が成功した場合、戻り値は、指定されたファイル、デバイス、名前付きパイプ、またはメール スロットへの開いているハンドルです。

失敗した場合の戻り値は、INVALID_HANDLE_VALUE です。 拡張エラー情報を取得するには、GetLastError呼び出します。

備考

CreateFile2 関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNT マクロを 0x0602 以降として定義します。 詳細については、「Windows ヘッダーの使用」を参照してください。

CreateFile2 では、ファイルの相互作用、およびその他のほとんどの種類の I/O デバイスと、Windows 開発者が使用できるメカニズムがサポートされます。 このセクションでは、CreateFile2 をさまざまなコンテキストやさまざまな I/O の種類で使用する場合に、開発者が経験する可能性があるさまざまな問題について説明します。 テキストは、ファイル システム上の実際のファイルに格納されているデータを特に参照する場合にのみ、ファイル という単語の使用を試みます。 ただし、ファイル の一部の使用は、ファイルのようなメカニズムをサポートする I/O オブジェクトをより一般的に参照している可能性があります。 ファイル という用語のこのリベラルな使用は、前述の歴史的な理由から、定数名とパラメーター名で特に一般的です。

CreateFile2によって返されるオブジェクト ハンドル 使用してアプリケーションが終了したら、CloseHandle 関数を使用してハンドルを閉じます。 これにより、システム リソースが解放されるだけでなく、ファイルやデバイスの共有やディスクへのデータのコミットなどに大きな影響を与える可能性があります。 詳細については、このトピック内で適宜説明します。

NTFS ファイル システムなどの一部のファイル システムでは、個々のファイルとディレクトリの圧縮または暗号化がサポートされています。 このサポートを持つマウントされたファイル システムを持つボリュームでは、新しいファイルは、そのディレクトリの圧縮属性と暗号化属性を継承します。

CreateFile2 を使用して、ファイルまたはディレクトリの圧縮、展開、または復号化を制御することはできません。 詳細については、「ファイルの作成と開き ファイルの圧縮と展開の、およびファイル暗号化を参照してください。

lpSecurityAttributespCreateExParams パラメーターで渡される CREATEFILE2_EXTENDED_PARAMETERS 構造体のメンバーが NULL場合、CreateFile2 によって返されるハンドルは、アプリケーションが作成する子プロセスでは継承できません。 このメンバーに関する次の情報も適用されます。

  • bInheritHandle メンバー変数が FALSE(0 以外の値) されていない場合は、ハンドルを継承できます。 したがって、ハンドルを継承できない場合は、FALSE を するためにこの構造体メンバーを適切に初期化することが重要です。
  • ファイルまたはディレクトリの既定のセキュリティ記述子のアクセス制御リスト (ACL) は、親ディレクトリから継承されます。
  • ターゲット ファイル システムは、lpSecurityDescriptor メンバーがそれらに影響を与えるために、ファイルとディレクトリのセキュリティをサポートする必要があります。これは、GetVolumeInformation使用して決定できます。
Windows 8 および Windows Server 2012 では、この関数は次のテクノロジでサポートされています。
テクノロジー サポート
サーバー メッセージ ブロック (SMB) 3.0 プロトコル はい
SMB 3.0 透過的フェールオーバー (TFO) いいえ
SMB 3.0 とスケールアウト ファイル共有 (SO) いいえ
クラスター共有ボリューム ファイル システム (CsvFS) はい
回復性のあるファイル システム (ReFS) はい
 

シンボリック リンクの動作の

この関数の呼び出しによってファイルが作成された場合、動作に変更はありません。 また、pCreateExParams パラメーターで渡される CREATEFILE2_EXTENDED_PARAMETERS 構造体の dwFileFlags メンバーの FILE_FLAG_OPEN_REPARSE_POINT フラグに関する次の情報を考慮してください。
  • FILE_FLAG_OPEN_REPARSE_POINT が指定されている場合:
    • 既存のファイルが開き、シンボリック リンクである場合、返されるハンドルはシンボリック リンクへのハンドルです。
    • TRUNCATE_EXISTING または FILE_FLAG_DELETE_ON_CLOSE が指定されている場合、影響を受けるファイルはシンボリック リンクです。
  • FILE_FLAG_OPEN_REPARSE_POINT が指定されていない場合:
    • 既存のファイルが開き、それがシンボリック リンクである場合、返されるハンドルはターゲットへのハンドルです。
    • CREATE_ALWAYSTRUNCATE_EXISTING、または FILE_FLAG_DELETE_ON_CLOSE が指定されている場合、影響を受けるファイルがターゲットです。

ファイル

ファイルの名前を変更または削除し、その後すぐに復元すると、システムはキャッシュで復元するファイル情報を検索します。 キャッシュされた情報には、短い名前と長い名前のペアと作成時間が含まれます。

DeleteFile以前の呼び出しの結果として削除が保留中のファイルに対して CreateFile2 呼び出すと、関数は失敗します。 オペレーティング システムは、ファイルに対するすべてのハンドルが閉じられるまで、ファイルの削除を遅延します。 GetLastErrorERROR_ACCESS_DENIEDを返します。

dwDesiredAccess パラメーターは 0 にすることができ、アプリケーションが適切なセキュリティ設定で実行されている場合、アプリケーションはファイルにアクセスせずにファイル属性を照会できます。 これは、読み取り/書き込みアクセスのためにファイルを開かずにファイルの存在をテストしたり、ファイルまたはディレクトリに関するその他の統計情報を取得したりする場合に便利です。 GetFileInformationByHandle および ファイル情報の取得と設定の を参照してください。

アプリケーションがネットワーク経由でファイルを作成する場合は、GENERIC_WRITE を単独で使用するよりも、dwDesiredAccess を使用することをお勧めします。 リダイレクターはキャッシュ マネージャーを使用でき、送信するデータの数が少ない SMB を減らすことができるため、結果のコードは高速になります。 この組み合わせにより、ネットワーク経由でファイルに書き込むときに ERROR_ACCESS_DENIEDが返される場合がある問題も回避できます。

詳細については、「ファイルの作成と開く」を参照してください。

ファイル ストリーム

NTFS ファイル システムでは、CreateFile2 を使用して、ファイル内に個別のストリームを作成できます。 詳細については、「ファイル ストリームの」を参照してください。

ディレクトリ

アプリケーションは CreateFile2使用してディレクトリを作成できないため、このユース ケースでは dwCreationDisposition OPEN_EXISTING 値のみが有効です。 ディレクトリを作成するには、アプリケーションで CreateDirectory 呼び出すか、CreateDirectoryExを する必要があります。

CreateFile2を使用してディレクトリを開くには、pCreateExParams パラメーターで渡される CREATEFILE2_EXTENDED_PARAMETERS 構造体 メンバー dwFileFlags の一部として、FILE_FLAG_BACKUP_SEMANTICS フラグを指定します。 このフラグが SE_BACKUP_NAME および SE_RESTORE_NAME 特権なしで使用されている場合は、適切なセキュリティ チェックが引き続き適用されます。

CreateFile2 を使用して FAT または FAT32 ファイル システム ボリュームの最適化中にディレクトリを開く場合は、MAXIMUM_ALLOWED アクセス権を指定しないでください。 この操作を行うと、ディレクトリへのアクセスが拒否されます。 代わりに、GENERIC_READ アクセス権を指定します。

詳細については、「ディレクトリ管理について」を参照してください。

物理ディスクとボリュームの

ディスクまたはボリュームへの直接アクセスは制限されます。

CreateFile2 関数を使用すると、物理ディスク ドライブまたはボリュームを開くことができます。この関数は、DeviceIoControl 関数で使用できる直接アクセス 記憶装置 (RSS) ハンドルを返します。 これにより、パーティション テーブルなどのディスク メタデータなど、ディスクまたはボリュームに直接アクセスできます。 ただし、この種類のアクセスでは、ディスク ドライブまたはボリュームのデータ損失の可能性もあります。このメカニズムを使用したディスクへの書き込みが正しくないと、その内容がオペレーティング システムからアクセスできなくなる可能性があるためです。 データの整合性を確保するには、DeviceIoControl と、ファイル システム ハンドルではなく直接アクセス ハンドルを使用して他の API がどのように動作するかについて理解しておく必要があります。

このような呼び出しを成功させるには、次の要件を満たす必要があります。

  • 呼び出し元には管理者特権が必要です。 詳細については、「特別な特権を使用した実行 」を参照してください。
  • dwCreationDisposition パラメーターには、OPEN_EXISTING フラグが必要です。
  • ボリュームまたはフロッピー ディスクを開く場合は、dwShareMode パラメーターに FILE_SHARE_WRITE フラグが必要です。
メモdwDesiredAccess パラメーターは 0 にすることができ、アプリケーションはデバイスにアクセスせずにデバイス属性のクエリを実行できます。 これは、たとえば、フロッピー ディスク ドライブのサイズと、ドライブにフロッピー ディスクを必要とせずにサポートする形式を決定するアプリケーションに役立ちます。 また、上位レベルのデータの読み取り/書き込みアクセス許可を必要とせずに統計を読み取る場合にも使用できます。
 
x
: 物理ドライブを開く場合、lpFileName 文字列は "\\.\PhysicalDriveX" という形式にする必要があります。 ハード ディスク番号は 0 から始まります。 次の表に、物理ドライブ文字列の例をいくつか示します。
意味
"\\.\PhysicalDrive0" 最初の物理ドライブを開きます。
"\\.\PhysicalDrive2" 3 番目の物理ドライブを開きます。
 

ボリュームの物理ドライブ識別子を取得するには、ボリュームのハンドルを開き、DeviceIoControl 関数を IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTSで呼び出します。 この制御コードは、ボリュームの 1 つ以上のエクステントごとにディスク番号とオフセットを返します。ボリュームは複数の物理ディスクにまたがる場合があります。

物理ドライブを開く例については、「DeviceIoControlの呼び出し」を参照してください。

ボリュームまたはリムーバブル メディア ドライブ (フロッピー ディスク ドライブやフラッシュ メモリサム ドライブなど) を開く場合、lpFileName 文字列 は、"\\.\X:" の形式にする必要があります。 ドライブのルート ディレクトリを示す末尾の円記号 (\) は使用しないでください。 次の表に、ドライブ文字列の例をいくつか示します。

意味
"\\.\A:" フロッピー ディスク ドライブ A を開きます。
"\\.\C:" C: ボリュームを開きます。
"\\.\C:\" C: ボリュームのファイル システムを開きます。
 

ボリューム名を参照してボリュームを開くこともできます。 詳細については、「ボリュームの名前付け を参照してください。

ボリュームには、1 つ以上のマウントされたファイル システムが含まれています。 ボリューム ハンドルは、CreateFile2でキャッシュされていないオプションが指定されていない場合でも、特定のファイル システムの判断 でキャッシュされていないとして開くことができます。 すべての Microsoft ファイル システムがボリューム ハンドルをキャッシュされていないものとして開くと想定する必要があります。 ファイルのキャッシュされていない I/O に対する制限もボリュームに適用されます。

ファイル システムでは、データがキャッシュされていない場合でも、バッファーの配置が必要な場合と必要ない場合があります。 ただし、ボリュームを開くときにキャッシュされていないオプションが指定されている場合は、ボリューム上のファイル システムに関係なく、バッファーの配置が適用されます。 ボリューム ハンドルをキャッシュなしとして開き、キャッシュされていない I/O 制限に従うすべてのファイル システムで推奨されます。

メモ ボリュームの最後のいくつかのセクターに対して読み取りまたは書き込みを行うには、DeviceIoControl 呼び出し、FSCTL_ALLOW_EXTENDED_DASD_IOを指定する必要があります。 これにより、パーティションの読み取りまたは書き込みの呼び出しで I/O 境界チェックを実行しないようにファイル システム ドライバーが通知されます。 代わりに、境界チェックはデバイス ドライバーによって実行されます。
 

チェンジャー デバイス

DeviceIoControl の IOCTL_CHANGER_* コントロール コード、チェンジャー デバイスへのハンドルを受け入れます。 チェンジャー デバイスを開くには、"\\.\Changerx" という形式のファイル名を使用します。ここで、x は、ゼロから始まる、開くデバイスを示す数値です。 C または C++ で記述されたアプリケーションで changer デバイス 0 を開くには、"\\\\.\\Changer0" というファイル名を使用します。

テープ ドライブ

"\\.\TAPEx" という形式のファイル名を使用して、テープ ドライブを開くことができます。ここで、x は、テープ ドライブ 0 から始まる、開くドライブを示す番号です。 C または C++ で記述されたアプリケーションでテープ ドライブ 0 を開くには、"\\\\.\\TAPE0" というファイル名を使用します。

詳細については、「バックアップを参照してください。

通信リソース

CreateFile2 関数は、シリアル ポート COM1 などの通信リソースへのハンドルを作成できます。 通信リソースの場合、dwCreationDisposition パラメーターは OPEN_EXISTINGdwShareMode パラメーターはゼロ (排他アクセス) である必要があり、hTemplateFile パラメーターは NULLする必要があります。 読み取り、書き込み、または読み取り/書き込みアクセスを指定でき、重複する I/O に対してハンドルを開くことができます。

9 より大きい COM ポート番号を指定するには、"\.\COM10" という構文を使用します。 この構文は、COM ポート番号を指定できるすべてのポート番号とハードウェアに対して機能します。

通信の詳細については、「通信 」を参照してください。

コンソール

CreateFile2 関数は、コンソール入力 (CONIN$) へのハンドルを作成できます。 継承または重複の結果としてプロセスに開いているハンドルがある場合は、アクティブな画面バッファー (CONOUT$) へのハンドルを作成することもできます。 呼び出し元のプロセスは、継承されたコンソールにアタッチするか、AllocConsole 関数によって割り当てられている必要があります。 コンソール ハンドルの場合は、次のように CreateFile2 パラメーターを設定します。
パラメーター 価値
lpFileName CONIN$ 値を使用してコンソール入力を指定します。

CONOUT$ 値を使用してコンソール出力を指定します。

CONIN$ は、SetStdHandle 関数が標準入力ハンドルをリダイレクトした場合でも、コンソール入力バッファーへのハンドルを取得します。 標準入力ハンドルを取得するには、GetStdHandle 関数を使用します。

CONOUT$ は、SetStdHandle が標準出力ハンドルをリダイレクト 場合でも、アクティブな画面バッファーへのハンドルを取得します。 標準出力ハンドルを取得するには、GetStdHandle使用します。

dwDesiredAccess を する GENERIC_READ | GENERIC_WRITE をお勧めしますが、どちらか一方がアクセスを制限できます。
dwShareMode を する CONIN$ を開くときに、FILE_SHARE_READを指定します。 CONOUT$ を開く場合は、FILE_SHARE_WRITEを指定します。

呼び出し元のプロセスがコンソールを継承する場合、または子プロセスがコンソールにアクセスできる必要がある場合は、このパラメーターを FILE_SHARE_READ | FILE_SHARE_WRITEする必要があります。

dwCreationDisposition の CreateFile2 を使用してコンソールを開く場合 OPEN_EXISTING を指定する必要があります。
 

pCreateExParams パラメーターで渡される CREATEFILE2_EXTENDED_PARAMETERS 構造体のメンバーを次のように設定します。

メンバーズ 価値
lpSecurityAttributes を する 本体を継承する場合は、SECURITY_ATTRIBUTES 構造体の bInheritHandle メンバーを TRUEする必要があります。
dwFileAttributes を する

dwFileFlags の

dwSecurityQosFlags の

hTemplateFile の

無視。
 

次の表に、dwDesiredAccess と lpFileNameのさまざまな設定を示します。

lpFileName dwDesiredAccess を する 結果
"CON" GENERIC_READ 入力用のコンソールを開きます。
"CON" GENERIC_WRITE 出力用のコンソールを開きます。
"CON" GENERIC_READ | GENERIC_WRITE CreateFile2 失敗します。GetLastErrorERROR_FILE_NOT_FOUNDを返します。
 

Mailslots

createFile2
が mailslot のクライアント側を開いた場合、mailslot サーバーが CreateMailSlot 関数を使用してローカル メールスロットを作成する前に、mailslot クライアントがローカル メールスロットを開こうとした場合、この関数は INVALID_HANDLE_VALUE を返します。

詳細については、「Mailslots」を参照してください。

パイプ

CreateFile2
名前付きパイプのクライアント側を開くと、関数はリッスン状態にある名前付きパイプの任意のインスタンスを使用します。 開始プロセスは必要な回数ハンドルを複製できますが、開いた後、名前付きパイプ インスタンスを別のクライアントが開くことはできません。 パイプを開くときに指定するアクセスは、CreateNamedPipe 関数の dwOpenMode パラメーターで指定されたアクセスと互換性がある必要があります。

この操作の前に CreateNamedPipe 関数がサーバーで正常に呼び出されなかった場合、パイプは存在せず、CreateFile2 ERROR_FILE_NOT_FOUNDで失敗します。

アクティブなパイプ インスタンスが少なくとも 1 つ存在するが、サーバー上に使用可能なリスナー パイプがない場合、つまり、すべてのパイプ インスタンスが現在接続されていることを意味 、CreateFile2ERROR_PIPE_BUSYで失敗します。

詳細については、「パイプ」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 8 [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2012 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー fileapi.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

ディレクトリ管理 について

ボリューム管理 の

バックアップ

CloseHandle の

コミュニケーション

CreateDirectory の

CreateDirectoryEx の

CreateFile の

CreateFileTransacted の

CreateMailSlot の

CreateNamedPipe の

ファイル の作成、削除、および保守

DeleteFile の

デバイス入出力制御 (IOCTL)

DeviceIoControl の

ファイルの圧縮と展開の

ファイル暗号化

ファイル管理機能の

ファイルのセキュリティとアクセス権の

ファイル ストリーム

関数

GetLastError の

I/O 完了ポートの

I/O の概念

Mailslots

ファイル情報の取得と設定の

の概要に関するトピック

パイプ

ReadFile の

ReadFileEx の

特別な特権を使用して実行する

SetFileAttributes の

WriteFile の

WriteFileEx の