Microsoft.Win32.UnsafeNativeMethods.ManifestEtw.EventWriteTransferWrapper C# (CSharp) Method

EventWriteTransferWrapper() static private method

Call the ETW native API EventWriteTransfer and checks for invalid argument error. The implementation of EventWriteTransfer on some older OSes (Windows 2008) does not accept null relatedActivityId. So, for these cases we will retry the call with an empty Guid.
static private EventWriteTransferWrapper ( long registrationHandle, System.Diagnostics.Tracing.EventDescriptor &eventDescriptor, System.Guid activityId, System.Guid relatedActivityId, int userDataCount, System.Diagnostics.Tracing.EventProvider userData ) : int
registrationHandle long
eventDescriptor System.Diagnostics.Tracing.EventDescriptor
activityId System.Guid
relatedActivityId System.Guid
userDataCount int
userData System.Diagnostics.Tracing.EventProvider
return int
            internal static int EventWriteTransferWrapper(long registrationHandle,
                                                         ref EventDescriptor eventDescriptor,
                                                         Guid* activityId,
                                                         Guid* relatedActivityId,
                                                         int userDataCount,
                                                         EventProvider.EventData* userData)
            {
                int HResult = EventWriteTransfer(registrationHandle, ref eventDescriptor, activityId, relatedActivityId, userDataCount, userData);
                if (HResult == ERROR_INVALID_PARAMETER && relatedActivityId == null)
                {
                    Guid emptyGuid = Guid.Empty;
                    HResult = EventWriteTransfer(registrationHandle, ref eventDescriptor, activityId, &emptyGuid, userDataCount, userData);
                }

                return HResult;
            }