15 TCHAR tszPipeName[MAX_PATH];
19 DWORD dwOpenMode = PIPE_ACCESS_DUPLEX;
27 bStreamMode == FALSE ? PIPE_TYPE_BYTE | PIPE_READMODE_BYTE :
28 PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE;
29 DWORD dwMaxInstance = PIPE_UNLIMITED_INSTANCES;
30 DWORD dwOutBuffSize = USHRT_MAX;
31 DWORD dwInBufSize = USHRT_MAX;
32 DWORD dwDefaultTimeOut = SHRT_MAX;
37 tszPipeName, dwOpenMode, dwPipeMode, dwMaxInstance, dwOutBuffSize,
38 dwInBufSize, dwDefaultTimeOut, NULL);
39 if (
_hObject == INVALID_HANDLE_VALUE)
49 return ::ConnectNamedPipe (
_hObject, NULL);
54 return ::DisconnectNamedPipe (
_hObject);
60 TCHAR tszPipeName[MAX_PATH];
65 tszPipeName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
66 FILE_ATTRIBUTE_NORMAL, NULL);
67 if (
_hObject == INVALID_HANDLE_VALUE)
77 TCHAR tszPipeName[MAX_PATH];
81 return ::WaitNamedPipe (tszPipeName, dwTimeout);
89 ret = ::PeekNamedPipe (
90 _hObject, lpvData, dwSize, &dwBytesRead, NULL, NULL);
92 return ret == TRUE ? dwBytesRead : (DWORD)(-1);
97 DWORD dwTotalBytesAvail;
100 ret = ::PeekNamedPipe (
_hObject, NULL, 0, NULL, &dwTotalBytesAvail, NULL);
102 return ret == FALSE ? -1 : dwTotalBytesAvail;
名前付きパイプに関するWindowsAPIを集約したクラス
HANDLE _hObject
ハンドルを使用するWindowsAPIで保持するHANDLE値
BOOL APIENTRY Open(LPCTSTR lpctszName)
パイプをオープンします。
BOOL APIENTRY Connect() const
サーバー側でクライアント接続を待機します。
BOOL APIENTRY Wait(LPCTSTR lpctszName, DWORD dwTimeout=NMPWAIT_USE_DEFAULT_WAIT) const
クライアント側でサーバー接続を待機します。
DWORD APIENTRY PeekRemain() const
バッファ内に残っているメッセージサイズを取得します。
BOOL APIENTRY Create(LPCTSTR lpctszName, BOOL bStreamMode)
パイプを作成します。
DWORD APIENTRY PeekData(LPVOID lpvData, DWORD dwSize) const
メッセージ内容を取り出さずに読み取ります。
BOOL APIENTRY Disconnect() const
サーバー側でクライアント接続を切断します。