cheat-engine/Cheat Engine/Common/Pipe.cpp
2014-01-28 23:39:37 +00:00

95 lines
1.3 KiB
C++

#include "StdAfx.h"
#include "Pipe.h"
//superclass to make pipe handling easier to work with
Pipe::Pipe(void)
{
pipehandle=0;
InitializeCriticalSection(&cs);
}
Pipe::~Pipe(void)
{
//check if someone forgot to clean it up
if ((pipehandle!=0) && (pipehandle!=INVALID_HANDLE_VALUE))
{
CloseHandle(pipehandle);
pipehandle=0;
}
}
void Pipe::Lock(void)
{
EnterCriticalSection(&cs);
}
void Pipe::Unlock(void)
{
LeaveCriticalSection(&cs);
}
void Pipe::Read(PVOID buf, int count)
{
DWORD br;
if (count==0) return;
if (ReadFile(pipehandle, buf, count, &br, NULL)==FALSE)
throw("Read Error");
}
void Pipe::Write(PVOID buf, int count)
{
DWORD bw;
if (count==0) return;
if (WriteFile(pipehandle, buf, count, &bw, NULL)==FALSE)
throw("Write Error");
}
BYTE Pipe::ReadByte()
{
BYTE b;
Read(&b, 1);
return b;
}
WORD Pipe::ReadWord()
{
WORD w;
Read(&w, 2);
return w;
}
DWORD Pipe::ReadDword()
{
DWORD dw;
Read(&dw, 4);
return dw;
}
UINT64 Pipe::ReadQword()
{
UINT64 q;
Read(&q, 8);
return q;
}
void Pipe::WriteByte(BYTE b)
{
Write(&b, 1);
}
void Pipe::WriteWord(WORD w)
{
Write(&w, 2);
}
void Pipe::WriteDword(DWORD dw)
{
Write(&dw, 4);
}
void Pipe::WriteQword(UINT64 q)
{
Write(&q, 8);
}