mirror-ac/user/pipe.cpp

64 lines
1,002 B
C++
Raw Normal View History

2023-08-22 19:32:25 +02:00
#include "pipe.h"
#include "common.h"
2023-09-08 09:42:35 +02:00
#include <intrin.h>
2023-08-22 19:32:25 +02:00
global::Pipe::Pipe( LPTSTR PipeName )
{
this->pipe_name = PipeName;
this->pipe_handle = CreateFile(
this->pipe_name,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
2023-09-10 18:30:46 +02:00
FILE_FLAG_OVERLAPPED,
2023-08-22 19:32:25 +02:00
NULL
);
if ( this->pipe_handle == INVALID_HANDLE_VALUE )
{
LOG_ERROR( "CreateFile failed with status 0x%x", GetLastError() );
return;
}
}
void global::Pipe::WriteToPipe( PVOID Buffer, SIZE_T Size )
{
DWORD bytes_written;
WriteFile(
this->pipe_handle,
Buffer,
Size,
&bytes_written,
NULL
);
if ( bytes_written == 0 )
{
LOG_ERROR( "WriteFile failed with status code 0x%x", GetLastError() );
return;
}
}
2023-09-12 17:14:23 +02:00
void global::Pipe::ReadPipe( PVOID Buffer, SIZE_T Size )
2023-08-22 19:32:25 +02:00
{
BOOL status = FALSE;
DWORD bytes_read;
2023-09-10 18:30:46 +02:00
status = ReadFile(
this->pipe_handle,
Buffer,
Size,
&bytes_read,
NULL
);
2023-08-22 19:32:25 +02:00
2023-09-12 17:14:23 +02:00
if ( status == NULL )
{
LOG_ERROR( "ReadFile failed with status code 0x%x", GetLastError() );
return;
}
2023-08-22 19:32:25 +02:00
}