IoSetActivityIdIrp

NTSTATUS __stdcall IoSetActivityIdIrp(_IRP *Irp, _GUID *Guid){
  int v4; 
  CHAR *IrpExtension; 
  v4 = 0;
  IrpExtension = IopAllocateIrpExtension((INT64)Irp, 0i64);
  if( !IrpExtension )
    return -1073741670;
  if( Guid )
  {
    *(_GUID *)(IrpExtension + 24) = *Guid;
  }
  else
  {
    if( KeGetCurrentThread() == *((struct _KTHREAD **)Irp + 19) )
      v4 = EtwActivityIdControl(1u, (LPGUID)(IrpExtension + 24));
    else
      v4 = -1073741637;
    if( v4 < 0 )
      IopFreeIrpExtension((__int64)Irp, 0, 1);
  }
  return v4;
}

Referenced by:

IoMakeAssociatedIrpPriv
IoReuseIrp
IopInitActivityIdIrp