public MQSPIGetOut(int version) { base.TrConstructor("%Z% %W% %I% %E% %U%", new object[] { version }); this.spiGetOutHdr = new SPIGETOUTHDR(); this.spiGetOutHdr.ID = rfpVB_ID_GET_OUT; this.Version = version; this.spiGetOutHdr.getStatus = 0; this.spiGetOutHdr.msgLength = 0; this.spiGetOutHdr.reserved = 0; this.spiGetOutHdr.inherited = 0; this.spiGetOutHdr.qTimeHigh = 0; this.spiGetOutHdr.qTimeLow = 0; }
public int ReadStruct(byte[] b, int Offset, bool readMessage) { uint method = 0x28b; this.TrEntry(method, new object[] { b, Offset, readMessage }); IntPtr zero = IntPtr.Zero; int length = this.GetLength(); int result = 0; try { zero = Marshal.AllocCoTaskMem(length); if (length > (b.Length - Offset)) { length = b.Length - Offset; } Marshal.Copy(b, Offset, zero, length); this.spiGetOutHdr = (SPIGETOUTHDR)Marshal.PtrToStructure(zero, typeof(SPIGETOUTHDR)); length = this.GetVersionLength(); if (this.spigo != null) { this.spigo.QueueEmpty = this.GetStatus & 1; if (this.Version >= 2) { this.spigo.Inherited = this.Inherited; } if (this.Version >= 3) { this.spigo.QTime = (ulong)(0xffffffffL * this.QTimeHigh) + this.QTimeLow; } } if (readMessage) { Offset += length; length = Math.Min(this.Msg.Length, b.Length - Offset); Buffer.BlockCopy(b, Offset, this.Msg, 0, length); } Marshal.FreeCoTaskMem(zero); result = Offset + length; } finally { base.TrExit(method, result); } return(result); }