public static void GetTransactionAttributes(Transaction transaction, out uint timeout, out IsolationFlags isoFlags, out string description)
        {
            XACTOPT             xactopt;
            XACTTRANSINFO       xacttransinfo;
            IDtcTransaction     dtcTransaction = TransactionInterop.GetDtcTransaction(transaction);
            ITransactionOptions options        = (ITransactionOptions)dtcTransaction;
            ISaneDtcTransaction transaction3   = (ISaneDtcTransaction)dtcTransaction;

            options.GetOptions(out xactopt);
            timeout     = xactopt.ulTimeout;
            description = xactopt.szDescription;
            transaction3.GetTransactionInfo(out xacttransinfo);
            isoFlags = xacttransinfo.isoFlags;
        }
        public static void GetTransactionAttributes(Transaction transaction,
                                                    out uint timeout,
                                                    out IsolationFlags isoFlags,
                                                    out string description)
        {
            IDtcTransaction     dtcTransaction     = TransactionInterop.GetDtcTransaction(transaction);
            ITransactionOptions transactionOptions = (ITransactionOptions)dtcTransaction;
            ISaneDtcTransaction saneTransaction    = (ISaneDtcTransaction)dtcTransaction;

            XACTOPT options;

            transactionOptions.GetOptions(out options);

            // For transactions not created inside this process, this will be zero
            timeout = options.ulTimeout;

            description = options.szDescription;

            XACTTRANSINFO info;

            saneTransaction.GetTransactionInfo(out info);

            isoFlags = info.isoFlags;
        }