Code:
[DllImport("kernel32.dll", SetLastError = true)]
public static extern SafeFileHandle CreateNamedPipe(
String pipeName,
uint dwOpenMode,
uint dwPipeMode,
uint nMaxInstances,
uint nOutBufferSize,
uint nInBufferSize,
uint nDefaultTimeOut,
IntPtr lpSecurityAttributes);
[DllImport("kernel32.dll", SetLastError = true)]
public static extern int ConnectNamedPipe(
SafeFileHandle hNamedPipe,
IntPtr lpOverlapped);
public const uint DUPLEX = (0x00000003);
public const uint GENERIC_READ = (0x80000000);
public const uint GENERIC_WRITE = (0x40000000);
public const uint OPEN_EXISTING = 3;
public const uint FILE_FLAG_OVERLAPPED = (0x40000000);
//Networking
[DllImport("msvcrt.dll")]
public static extern void* memcpy(void* dest, void* src, int size);
public static void MemCopy(byte[] Dest, byte[] Src, int Size)
{
fixed (byte* src = Src, dst = Dest)
memcpy(dst, src, Size);
}
public static void MemCopy(byte[] Dest, int DestOffset, byte[] Src, int Size)
{
fixed (byte* src = Src, dst = Dest)
memcpy(dst + DestOffset, src, Size);
}
public static void MemCopy(byte[] Dest, int DestOffset, byte[] Src, int SourceOffset, int Size)
{
fixed (byte* src = Src, dst = Dest)
memcpy(dst + DestOffset, src + SourceOffset, Size);
}
public static void MemCopy(byte[] Dest, byte[] Src, int SourceOffset, int Size)
{
fixed (byte* src = Src, dst = Dest)
memcpy(dst, src + SourceOffset, Size);
}