EtwGetProviderIdFromHandle

NTSTATUS __stdcall EtwGetProviderIdFromHandle(UINT64 RegHandle, INT8 RequestorMode, _GUID *ProviderId){
  int v3; 
  VOID *v7; 
  PVOID Object; 

  v3 = 0;
  if( RequestorMode )
  {
    Object = 0i64;
    v3 = ObReferenceObjectByHandle((VOID *)RegHandle, 0x800ui64, EtwpRegistrationObjectType, 1, &Object, 0i64);
    if( v3 >= 0 )
    {
      v7 = Object;
      *ProviderId = *(_GUID *)(*((_QWORD *)Object + 4) + 40i64);
      ObfDereferenceObjectWithTag(v7, 0x746C6644ui64);
    }
    return v3;
  }
  if( RegHandle && EtwpReferenceGuidEntry(*(_ETW_GUID_ENTRY **)(RegHandle + 32)) )
  {
    *ProviderId = *(_GUID *)(*(_QWORD *)(RegHandle + 32) + 40i64);
    EtwpUnreferenceGuidEntry(*(_ETW_GUID_ENTRY **)(RegHandle + 32));
    return v3;
  }
  return -1073741816;
}

Referenced by:

EtwWriteEndScenario
EtwWriteStartScenario
WdiDispatchControl