CreateNamedPipe |
Declare Function Api_CreateNamedPipe& Lib "kernel32" Alias "CreateNamedPipeA" (ByVal Name$, ByVal dwOpenMode&, ByVal PipeMode&, ByVal MaxInst&, ByVal OutBufferSize&, ByVal nInBufferSize&, ByVal nDefaultTimeOut&, SecurityAttributes As SECURITY_ATTRIBUTES) |
||||||||||||||||||||||||||||||||||||||||
Declare Function CreateNamedPipe Lib "kernel32" Alias "CreateNamedPipeA" (ByVal lpName As String, ByVal dwOpenMode As Long, ByVal dwPipeMode As Long, ByVal nMaxInstances As Long, ByVal nOutBufferSize As Long, ByVal nInBufferSize As Long, ByVal nDefaultTimeOut As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long |
|||||||||||||||||||||||||||||||||||||||||
名前付きパイプのインスタンスを作成し、そのインスタンスのハンドルを返す。その後、そのハンドルを使ってパイプの操作を行える。名前付きパイプのサーバープロセスはこの関数を使って、新しい名前付きパイプの最初のインスタンスを作成して基本的な属性を設定したり、既存の名前付きパイプの新しいインスタンスを作成できる。 |
|||||||||||||||||||||||||||||||||||||||||
パラメータ
パイプ名では、大文字と小文字を区別しない。
ライトスルーモードとオーバーラップモードは、次の値の任意の組み合わせで指定する。これらのモードは、同じパイプの各インスタンスで異な
っていてもかまわない。
セキュリティモードは、次の値の任意の組み合わせで指定する。これらのモードは、同じパイプの各インスタンスで異なっていてもかまわな い。パラメータの他のモードでどのような値を指定したかにかかわりなく、これらの値を指定できる。
dwPipeMode 0 を指定すると、既定としてバイトタイプモードが割り当てられる。
読み取りモードは、次の値のいずれかで指定する。これらのモードは、パイプの各インスタンスで異なっていてもかまわない。0 を指定する と、既定としてバイト読み取りモードが割り当てられる。
待機モードは、次の値のいずれかで指定する。これらのモードは、同じパイプの各インスタンスで異なっていてもかまわない。0 を指定する
と、既定としてブロッキングモードが割り当てられる。
ノンブロッキングモードは、Microsoft LAN Lanager 2.0 との互換性を保つ目的でサポートされている。名前付きパイプで非同期入出力
(I/O)を行うために使うことは避ける。 1〜PIPE_UNLIMITED_INSTANCES(Winbase.h で 255 と定義されている)の値を指定する。PIPE_UNLIMITED_INSTANCES を指
定すると、システムのリソースが利用できる限り、インスタンスを作成できる。
指定する。パイプの各インスタンスで同じ値を指定しなければならない。
で NULL
を指定すると、既定のセキュリティ記述子が使われ、ハンドルを継承できない。
の値が
PIPE_UNLIMITED_INSTANCES より大きい場合、ERROR_INVALID_PARAMETER が返る。 FILE_CREATE_PIPE_INSTANCE アクセス権を持っていなければならない。新しい名前付きパイプを作成する場合、セキュリティ属性に
関係するパラメータで指定されたアクセス制御リスト(ACL)が、その名前付きパイプの随意アクセス制御リスト(DACL)を定義する。 信、発信のいずれか)、インスタンスの最大数、タイムアウト値の同じ値を指定しなければならない。異なる値を指定すると、
CreateNamedPipe
関数は失敗し、GetLastError 関数は ERROR_ACCESS_DENIED を返す。
に問題が発生することを防止するために、必要に応じてクライアント側をメッセージモードに設定する。 イズは、システムの既定値、システムの最小値、システムの最大値、指定されたサイズをすぐ上の割り当て境界値へ丸めた値のいずれか
である。 競合が発生することがある。C のランタイムなどの初期化コードは、継承されたハンドルをロックして検討する必要があるが、通常、この競
合が発生するのは、このような場合である。 削除される。 |