名前付きパイプを作成
Declare Function CreateNamedPipe Lib "kernel32.dll" 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
Declare Function CreateNamedPipe Lib "kernel32.dll" Alias "CreateNamedPipeA" _
(ByVal lpName As String, ByVal dwOpenMode As Integer, ByVal dwPipeMode As Integer, _
ByVal nMaxInstances As Integer, ByVal nOutBufferSize As Integer, ByVal nInBufferSize As Integer, _
ByVal nDefaultTimeOut As Integer, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Integer
HANDLE CreateNamedPipe(
LPCTSTR lpName,
DWORD dwOpenMode,
DWORD dwPipeMode,
DWORD nMaxInstances,
DWORD nOutBufferSize,
DWORD nInBufferSize,
DWORD nDefaultTimeOut,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
名前つきパイプの名称を格納したNULL文字で終わる文字列
dwOpenModeパイプハンドルのパイプアクセスモードを指定する定数
双方向モード、ライトスルーモード、セーフティーアクセスモードを指定する
以下のタイプモードのいずれかを指定する
・書き込みモード
・読み込みモード
・ウェイトモード
パイプを利用するアプリケーションインスタンスの最大値を指定する
nOutBufferSize出力バッファのサイズをバイト単位で指定する
nInBufferSize入力バッファのサイズをバイト単位で指定する
nDefaultTimeOutタイムアウトの発生時間をミリ単位で指定する
lpSecurityAttributes 戻り値成功したとき 名前付きパイプのサーバー終端を識別するハンドル
失敗したとき INVALID_HANDLE_VALUE
新しい名前付きパイプが作成された場合、パラメーターからのアクセスコントロール
リスト(ACL)は名前付きパイプのための任意のアクセスコントロールを定義する。
PIPE_ACCESS_DUPLEX 双方向モードで作成する
PIPE_ACCESS_INBOUND クライアントからサーバーにだけ通信を行う
PIPE_ACCESS_OUTBOUND サーバーからクライアントにだけ通信を行う
(ライトスルーか、オーバーラップの指定)
FILE_FLAG_WRITE_THROUGH ライトスルーモードである
FILE_FLAG_OVERLAPPED オーバーラップモードである
(セーフティアクセスモードの設定を指定)
WRITE_DAC 呼び出し側は任意のアクセスを可能にして
アクセスコントロールのリストを制御する
WRITE_OWNER 呼び出し側は名前付きパイプの所有者に対して
書き込みが許可される
ACCESS_SYSTEM_SECURITY 呼び出し側はシステムアクセスコントロールリストに対して
書き込みが許可される
(書き込みモードの場合)
PIPE_TYPE_BYTE データはバイトの流れとしてパイプに書き込まれる
PIPE_READMODE_MESSAGEと同時に指定できない
PIPE_TYPE_MESSAGE データはメッセージの流れとしてパイプに書き込まれる
PIPE_TYPE_BYTEと同時に指定できない
(読み込みモードの場合)
PIPE_READMODE_BYTE データはバイトの流れとして読み込まれる
PIPE_TYPE_MESSAGE,PIPE_TYPE_BYTEと同時に指定できない
PIPE_READMODE_MESSAGE データはメッセージの流れとして読まれる
PIPE_TYPE_MESSAGEが指定されている場合のみ有効である
(ウェイトモードの場合)
PIPE_WAIT ブロックモードで動作する
このモードの使用はクライアントプロセスが動作を
実行する状況において無制限に待つことを意味する
PIPE_NOWAIT ノンブロックモードで動作する