IoSetActivityIdIrp

NTSTATUS __stdcall IoSetActivityIdIrp(_IRP *Irp, _GUID *Guid){
  int v4; 
  _IOP_IRP_EXTENSION *IrpExtension; 

  v4 = 0;
  IrpExtension = IopAllocateIrpExtension(Irp, IopActivityIdType);
  if( !IrpExtension )
    return -1073741670;
  if( Guid )
  {
    IrpExtension->ActivityId = *Guid;
  }
  else
  {
    if( KeGetCurrentThread() == (struct _KTHREAD *)Irp->Tail.Thread )
      v4 = EtwActivityIdControl(1ui64, &IrpExtension->ActivityId);
    else
      v4 = -1073741637;
    if( v4 < 0 )
      IopFreeIrpExtension(Irp, IopActivityIdType, 1u);
  }
  return v4;
}

Referenced by:

IoMakeAssociatedIrpPriv
IoReuseIrp
IopInitActivityIdIrp