@@ -765,7 +765,7 @@ session_tracepoint_write_event (
765765 return false;
766766
767767 // Setup iovec array
768- const int max_non_parameter_iov = 8 ;
768+ const int max_non_parameter_iov = 9 ;
769769 const int max_static_io_capacity = 30 ; // Should account for most events that use EventData structs
770770 struct iovec static_io [max_static_io_capacity ];
771771 struct iovec * io = static_io ;
@@ -824,21 +824,33 @@ session_tracepoint_write_event (
824824 uint64_t session_mask = ep_session_get_mask (session );
825825 bool should_write_metadata = !ep_event_was_metadata_written (ep_event , session_mask );
826826 if (should_write_metadata ) {
827+ EventPipeProvider * event_provider = ep_event_get_provider (ep_event );
828+ const ep_char16_t * provider_name_utf16 = ep_provider_get_provider_name_utf16 (event_provider );
829+ uint32_t provider_name_len = (uint32_t )ep_rt_utf16_string_len (provider_name_utf16 );
830+ uint32_t provider_name_size_bytes = (provider_name_len + 1 ) * sizeof (ep_char16_t );
831+ uint32_t event_metadata_len = ep_event_get_metadata_len (ep_event );
832+ uint32_t complete_metadata_len = provider_name_size_bytes + event_metadata_len ;
833+
827834 uint8_t extension_metadata [1 + sizeof (uint32_t )];
828- uint32_t metadata_len = ep_event_get_metadata_len (ep_event );
829835 extension_metadata [0 ] = 0x01 ; // label
830- * (uint32_t * )& extension_metadata [1 ] = metadata_len ;
836+ * (uint32_t * )& extension_metadata [1 ] = complete_metadata_len ;
831837 io [io_index ].iov_base = extension_metadata ;
832838 io [io_index ].iov_len = sizeof (extension_metadata );
833839 io_index ++ ;
834840 extension_len += sizeof (extension_metadata );
835841 io_bytes_to_write += sizeof (extension_metadata );
836842
843+ io [io_index ].iov_base = (void * )provider_name_utf16 ;
844+ io [io_index ].iov_len = provider_name_size_bytes ;
845+ io_index ++ ;
846+ extension_len += provider_name_size_bytes ;
847+ io_bytes_to_write += provider_name_size_bytes ;
848+
837849 io [io_index ].iov_base = (void * )ep_event_get_metadata (ep_event );
838- io [io_index ].iov_len = metadata_len ;
850+ io [io_index ].iov_len = event_metadata_len ;
839851 io_index ++ ;
840- extension_len += metadata_len ;
841- io_bytes_to_write += metadata_len ;
852+ extension_len += event_metadata_len ;
853+ io_bytes_to_write += event_metadata_len ;
842854 }
843855
844856 // Extension Activity IDs
0 commit comments