using System;
using System.Collections.Generic;
+using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
public void SetData(byte[] data, int dstOffs)
{
if ((shm.flags & (uint)SharedMemoryFlags.Output) == 0) throw new InvalidOperationException("No write access");
- //TODO copy data into shared memory starting at given offset
+ Marshal.Copy(data, 0, shm.buffer + dstOffs, data.Length);
}
/// <summary>
/// This function makes a copy and is designed for convenient operations on small buffers.
public void GetData(byte[] data, int srcOffs)
{
if ((shm.flags & (uint)SharedMemoryFlags.Input) == 0) throw new InvalidOperationException("No read access");
- //TODO copy data from shared memory starting at given offset
+ Marshal.Copy(shm.buffer + srcOffs, data, 0, data.Length);
}
};
internal void Open(Guid destination, uint loginMethod, byte[] connectionData, Parameter[] paramlist)
{
- Interop.TEEC_UUID uuid = new Interop.TEEC_UUID();
+ Interop.TEEC_UUID uuid = Interop.TEEC_UUID.ToTeecUuid(destination);
Interop.TEEC_Operation op = new Interop.TEEC_Operation();
uint ro;
- int ret = Interop.Libteec.OpenSession(ref context, ref session, uuid, loginMethod, connectionData, ref op, out ro);
+ int ret = Interop.Libteec.OpenSession(ref context, ref session, ref uuid, loginMethod, connectionData, ref op, out ro);
//MAYBE map origin of return code to specyfic Exception
Interop.CheckNThrowException(ret, string.Format("OpenSession('{0}')", destination));
}
public Context(string name)
{
context = new Interop.TEEC_Context();
+ if (name != null && name.Length == 0)
+ name = null;
int ret = Interop.Libteec.InitializeContext(name, ref context);
Interop.CheckNThrowException(ret, string.Format("InititalizeContext('{0}')", name));
}