public Mechanism(ulong type, IMechanismParams parameter)
{
if (parameter == null)
throw new ArgumentNullException("parameter");
// Keep reference to parameter so GC will not free it while mechanism exists
_mechanismParams = parameter;
object lowLevelParams = _mechanismParams.ToMarshalableStructure();
_ckMechanism = CkmUtils.CreateMechanism(type, lowLevelParams);
}