public CkOtpParams(List<CkOtpParam> parameters)
{
_lowLevelStruct.Params = IntPtr.Zero;
_lowLevelStruct.Count = 0;
if ((parameters != null) && (parameters.Count > 0))
{
// Allocate memory for parameters
int ckOtpParamSize = UnmanagedMemory.SizeOf(typeof(CK_OTP_PARAM));
_lowLevelStruct.Params = UnmanagedMemory.Allocate(ckOtpParamSize * parameters.Count);
_lowLevelStruct.Count = Convert.ToUInt64(parameters.Count);
// Copy paramaters to allocated memory
for (int i = 0; i < parameters.Count; i++)
{
IntPtr tempPointer = new IntPtr(_lowLevelStruct.Params.ToInt64() + (i * ckOtpParamSize));
UnmanagedMemory.Write(tempPointer, parameters[i].ToMarshalableStructure());
}
}
}