//获取逐笔成交 public TDBErrNo GetTransaction(TDBReq reqTransaction, out TDBTransaction[] tdbTransaction) { TDBErrNo nVerifyRet = SimpleVerifyReqInput(reqTransaction); tdbTransaction = new TDBTransaction[0]; if (nVerifyRet != TDBErrNo.TDB_SUCCESS) { return(nVerifyRet); } LibTDBWrap.TDBDefine_ReqTransaction reqAPITransaction = reqTransaction.ToAPIReqTransaction(); IntPtr pUnmanagedReqAPITransaction = LibWrapHelper.CopyStructToGlobalMem(reqAPITransaction, typeof(LibTDBWrap.TDBDefine_ReqTransaction)); IntPtr ppTransaction = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr))); IntPtr pCount = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Int32))); int nRet = LibTDBWrap.TDB_GetTransaction(m_hTdb, pUnmanagedReqAPITransaction, ppTransaction, pCount); IntPtr pTransaction = (IntPtr)Marshal.PtrToStructure(ppTransaction, typeof(IntPtr)); int nCount = (Int32)Marshal.PtrToStructure(pCount, typeof(Int32)); if ((UInt64)pTransaction != 0 && nCount > 0 && nRet == 0) { tdbTransaction = new TDBTransaction[nCount]; int nElemLen = Marshal.SizeOf(typeof(LibTDBWrap.TDBDefine_Transaction)); for (int i = 0; i < nCount; i++) { IntPtr pCurRecord = (IntPtr)((UInt64)pTransaction + (UInt64)(nElemLen * i)); LibTDBWrap.TDBDefine_Transaction apiFuture = (LibTDBWrap.TDBDefine_Transaction)Marshal.PtrToStructure(pCurRecord, typeof(LibTDBWrap.TDBDefine_Transaction)); tdbTransaction[i] = new TDBTransaction(); tdbTransaction[i].FromAPITransaction(ref apiFuture); } } else { //如果网络连接断掉,则关闭连接 if (nRet == (int)TDBErrNo.TDB_NETWORK_ERROR) { DisConnect(); } } if ((UInt64)pTransaction != 0) { LibTDBWrap.TDB_Free(pTransaction); } Marshal.FreeHGlobal(pUnmanagedReqAPITransaction); Marshal.FreeHGlobal(ppTransaction); Marshal.FreeHGlobal(pCount); return((TDBErrNo)nRet); }
public int m_nBidOrder; //叫买序号 public void FromAPITransaction(ref LibTDBWrap.TDBDefine_Transaction apiTransaction) { m_strWindCode = LibWrapHelper.AnsiArr2String(apiTransaction.chWindCode, 0, apiTransaction.chWindCode.Length); m_strCode = LibWrapHelper.AnsiArr2String(apiTransaction.chCode, 0, apiTransaction.chCode.Length); m_nDate = apiTransaction.nDate; m_nTime = apiTransaction.nTime; m_nIndex = apiTransaction.nIndex; m_chFunctionCode = (char)apiTransaction.chFunctionCode; m_chOrderKind = (char)apiTransaction.chOrderKind; m_chBSFlag = (char)apiTransaction.chBSFlag; m_nTradePrice = apiTransaction.nTradePrice; m_nTradeVolume = apiTransaction.nTradeVolume; m_nAskOrder = apiTransaction.nAskOrder; m_nBidOrder = apiTransaction.nBidOrder; }