public LibTDBWrap.TDBDefine_ReqTransaction ToAPIReqOrderQueue() { LibTDBWrap.TDBDefine_ReqTransaction reqOrderQueue = new LibTDBWrap.TDBDefine_ReqTransaction(); reqOrderQueue.chCode = LibWrapHelper.String2AnsiArr(m_strWindCode, 32); reqOrderQueue.chMarketKey = LibWrapHelper.String2AnsiArr(m_strMarketKey, 24); reqOrderQueue.nDate = m_nDate; reqOrderQueue.nBeginTime = m_nBeginTime; reqOrderQueue.nEndTime = m_nEndTime; return(reqOrderQueue); }
//逐笔委托 public TDBErrNo GetOrder(TDBReq reqOrder, out TDBOrder[] tdbOrder) { TDBErrNo nVerifyRet = SimpleVerifyReqInput(reqOrder); tdbOrder = new TDBOrder[0]; if (nVerifyRet != TDBErrNo.TDB_SUCCESS) { return(nVerifyRet); } LibTDBWrap.TDBDefine_ReqTransaction reqAPIOrder = reqOrder.ToAPIReqTransaction(); IntPtr pUnmanagedReqAPIOrder = LibWrapHelper.CopyStructToGlobalMem(reqAPIOrder, typeof(LibTDBWrap.TDBDefine_ReqTransaction)); IntPtr ppOrder = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr))); IntPtr pCount = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Int32))); int nRet = LibTDBWrap.TDB_GetOrder(m_hTdb, pUnmanagedReqAPIOrder, ppOrder, pCount); IntPtr pOrder = (IntPtr)Marshal.PtrToStructure(ppOrder, typeof(IntPtr)); int nCount = (Int32)Marshal.PtrToStructure(pCount, typeof(Int32)); if ((UInt64)pOrder != 0 && nCount > 0 && nRet == 0) { tdbOrder = new TDBOrder[nCount]; int nElemLen = Marshal.SizeOf(typeof(LibTDBWrap.TDBDefine_Order)); for (int i = 0; i < nCount; i++) { IntPtr pCurRecord = (IntPtr)((UInt64)pOrder + (UInt64)(nElemLen * i)); LibTDBWrap.TDBDefine_Order apiOrder = (LibTDBWrap.TDBDefine_Order)Marshal.PtrToStructure(pCurRecord, typeof(LibTDBWrap.TDBDefine_Order)); tdbOrder[i] = new TDBOrder(); tdbOrder[i].FromAPIOrder(ref apiOrder); } } else { //如果网络连接断掉,则关闭连接 if (nRet == (int)TDBErrNo.TDB_NETWORK_ERROR) { DisConnect(); } } if ((UInt64)pOrder != 0) { LibTDBWrap.TDB_Free(pOrder); } Marshal.FreeHGlobal(pUnmanagedReqAPIOrder); Marshal.FreeHGlobal(ppOrder); Marshal.FreeHGlobal(pCount); return((TDBErrNo)nRet); }