private static unsafe WrappedGcHandle ConvertTracerParameter(EventTracerParameters parameter, ref CEventTrace.EventTracerParameters internalParameters) { var wrappedParameterObject = new WrappedGcHandle(parameter); internalParameters.UserData = wrappedParameterObject.Get().ToPointer(); internalParameters.TraceCallback = parameter.TraceCallback == null ? IntPtr.Zero : Marshal.GetFunctionPointerForDelegate(CallbackThunkDelegates.TraceCallbackThunkDelegate); return(wrappedParameterObject); }
private static CEventTrace.EventTracerParameters[] ConvertTracerParameters(EventTracerParameters[] parameters, out WrappedGcHandle[] handles) { handles = new WrappedGcHandle[parameters.Length]; var internalParameters = new CEventTrace.EventTracerParameters[parameters.Length]; for (var i = 0; i < parameters.Length; i++) { var parameterHandle = ConvertTracerParameter(parameters[i], ref internalParameters[i]); if (parameterHandle != null) { handles[i] = parameterHandle; } } return(internalParameters); }