Alternate e697dbe9c5997e35395fe158628dd8c5209481da
for Visual Studio 2022 and Windows 11.
読み取り中…
検索中…
一致する文字列を見つけられません
Pipe.cpp
[詳解]
1// ----------------------------------------------------------------------------
6
7#include "pch.h"
8#include "Pipe.h"
9
10using namespace alt;
11
13{
14 _hRead = INVALID_HANDLE_VALUE;
15 _hWrite = INVALID_HANDLE_VALUE;
16}
17
19{
20 this->Close ();
21}
22
24{
25 SECURITY_ATTRIBUTES sa = { 0, 0, 0 };
26 sa.nLength = sizeof (SECURITY_ATTRIBUTES);
27 sa.bInheritHandle = TRUE;
28 sa.lpSecurityDescriptor = NULL;
29
30 return ::CreatePipe (&_hRead, &_hWrite, &sa, 0);
31}
32
33DWORD Pipe::Peek (LPVOID lpvBuf, DWORD dwSize) const
34{
35 DWORD dwReadSize;
36 DWORD dwAvail;
37 DWORD dwLeft;
38
39 BOOL ret = ::PeekNamedPipe (
40 _hRead, lpvBuf, dwSize, &dwReadSize, &dwAvail, &dwLeft);
41
42 return ret == TRUE ? dwReadSize : -1;
43}
44
45DWORD Pipe::Read (LPVOID lpvBuf, DWORD dwSize) const
46{
47 DWORD dwReadSize;
48
49 BOOL ret = ::ReadFile (_hRead, lpvBuf, dwSize, &dwReadSize, NULL);
50
51 return ret == TRUE ? dwReadSize : -1;
52}
53
54BOOL Pipe::Write (LPVOID lpvBuf, DWORD dwSize) const
55{
56 DWORD dwWrittenSize;
57
58 BOOL ret = ::WriteFile (_hWrite, lpvBuf, dwSize, &dwWrittenSize, NULL);
59
60 return ret == TRUE ? dwWrittenSize : -1;
61}
62
64{
65 BOOL ret1 = ::CloseHandle (_hRead);
66 _hRead = INVALID_HANDLE_VALUE;
67 BOOL ret2 = ::CloseHandle (_hWrite);
68 _hWrite = INVALID_HANDLE_VALUE;
69
70 return ret1 == TRUE && ret2 == TRUE ? TRUE : FALSE;
71}
パイプに関するWindowsAPIを集約したクラス
プリコンパイル済みヘッダー ファイルです。
HANDLE _hWrite
Definition: Pipe.h:70
BOOL APIENTRY Close()
パイプのクローズ
Definition: Pipe.cpp:63
DWORD APIENTRY Peek(LPVOID lpvBuf, DWORD dwSize) const
メッセージの確認
Definition: Pipe.cpp:33
APIENTRY Pipe()
コンストラクタ
Definition: Pipe.cpp:12
HANDLE _hRead
Definition: Pipe.h:69
DWORD APIENTRY Read(LPVOID lpvBuf, DWORD dwSize) const
メッセージの読み込み
Definition: Pipe.cpp:45
BOOL APIENTRY Create()
パイプの作成
Definition: Pipe.cpp:23
BOOL APIENTRY Write(LPVOID lpvBuf, DWORD dwSize) const
メッセージの書き込み
Definition: Pipe.cpp:54
APIENTRY ~Pipe()
デストラクタ
Definition: Pipe.cpp:18
Definition: DBLibrary.h:12