Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }