Exemplo n.º 1
0
        public void SendOrder(ref OrderField[] orders, out string[] OrderRefs)
        {
            int OrderField_size  = Marshal.SizeOf(typeof(OrderField));
            int OrderIDType_size = Marshal.SizeOf(typeof(OrderIDType));

            IntPtr OrderField_Ptr  = Marshal.AllocHGlobal(OrderField_size * orders.Length);
            IntPtr OrderIDType_Ptr = Marshal.AllocHGlobal(OrderIDType_size * orders.Length);

            // 将结构体写成内存块
            for (int i = 0; i < orders.Length; ++i)
            {
                Marshal.StructureToPtr(orders[i], OrderField_Ptr + i * OrderField_size, false);
            }

            IntPtr ptr = proxy.XRequest((byte)RequestType.ReqOrderInsert, Handle, IntPtr.Zero,
                                        0, 0,
                                        OrderField_Ptr, orders.Length, OrderIDType_Ptr, 0, IntPtr.Zero, 0);

            OrderRefs = new string[orders.Length];

            for (int i = 0; i < orders.Length; ++i)
            {
                // 这里定义一个ID占64字节
                OrderIDType output = (OrderIDType)Marshal.PtrToStructure(OrderIDType_Ptr + i * OrderIDType_size, typeof(OrderIDType));

                OrderRefs[i] = output.ID;
            }

            Marshal.FreeHGlobal(OrderField_Ptr);
            Marshal.FreeHGlobal(OrderIDType_Ptr);
        }
Exemplo n.º 2
0
        public void CancelOrder(string[] szId,out string[] errs)
        {
            int OrderIDType_size = Marshal.SizeOf(typeof(OrderIDType));

            IntPtr Input_Ptr = Marshal.AllocHGlobal(OrderIDType_size * szId.Length);
            IntPtr Output_Ptr = Marshal.AllocHGlobal(OrderIDType_size * szId.Length);

            // 将结构体写成内存块
            for (int i = 0; i < szId.Length; ++i)
            {
                OrderIDType _szId = new OrderIDType();
                _szId.ID = szId[i];
                Marshal.StructureToPtr(_szId, new IntPtr(Input_Ptr.ToInt64() + i * OrderIDType_size), false);
            }

            IntPtr ptr = proxy.XRequest((byte)RequestType.ReqOrderAction, Handle, IntPtr.Zero, 0, 0,
                Input_Ptr, szId.Length, Output_Ptr, 0, IntPtr.Zero, 0);

            errs = new string[szId.Length];

            for (int i = 0; i < szId.Length; ++i)
            {
                // 这里定义一个ID占64字节
                OrderIDType output = (OrderIDType)Marshal.PtrToStructure(new IntPtr(Output_Ptr.ToInt64() + i * OrderIDType_size), typeof(OrderIDType));

                errs[i] = output.ID;
            }

            Marshal.FreeHGlobal(Input_Ptr);
            Marshal.FreeHGlobal(Output_Ptr);
        }
Exemplo n.º 3
0
        public void SendQuote(ref QuoteField quote, out string AskRef, out string BidRef)
        {
            int QuoteField_size  = Marshal.SizeOf(typeof(QuoteField));
            int OrderIDType_size = Marshal.SizeOf(typeof(OrderIDType));

            IntPtr QuoteField_Ptr = Marshal.AllocHGlobal(QuoteField_size);
            IntPtr AskRef_Ptr     = Marshal.AllocHGlobal(OrderIDType_size);
            IntPtr BidRef_Ptr     = Marshal.AllocHGlobal(OrderIDType_size);

            // 将结构体写成内存块
            for (int i = 0; i < 1; ++i)
            {
                Marshal.StructureToPtr(quote, QuoteField_Ptr + i * QuoteField_size, false);
            }

            IntPtr ptr = proxy.XRequest((byte)RequestType.ReqQuoteInsert, Handle, IntPtr.Zero,
                                        0, 0,
                                        QuoteField_Ptr, 1, AskRef_Ptr, 0, BidRef_Ptr, 0);

            AskRef = string.Empty;
            BidRef = string.Empty;

            for (int i = 0; i < 1; ++i)
            {
                // 这里定义一个ID占64字节
                OrderIDType output = (OrderIDType)Marshal.PtrToStructure(AskRef_Ptr + i * OrderIDType_size, typeof(OrderIDType));
                AskRef = output.ID;
                output = (OrderIDType)Marshal.PtrToStructure(BidRef_Ptr + i * OrderIDType_size, typeof(OrderIDType));
                BidRef = output.ID;
            }

            Marshal.FreeHGlobal(QuoteField_Ptr);
            Marshal.FreeHGlobal(AskRef_Ptr);
            Marshal.FreeHGlobal(BidRef_Ptr);
        }
Exemplo n.º 4
0
        public void CancelOrder(string[] szId, out string[] errs)
        {
            int OrderIDType_size = Marshal.SizeOf(typeof(OrderIDType));

            IntPtr Input_Ptr  = Marshal.AllocHGlobal(OrderIDType_size * szId.Length);
            IntPtr Output_Ptr = Marshal.AllocHGlobal(OrderIDType_size * szId.Length);

            // 将结构体写成内存块
            for (int i = 0; i < szId.Length; ++i)
            {
                OrderIDType _szId = new OrderIDType();
                _szId.ID = szId[i];
                Marshal.StructureToPtr(_szId, Input_Ptr + i * OrderIDType_size, false);
            }

            IntPtr ptr = proxy.XRequest((byte)RequestType.ReqOrderAction, Handle, IntPtr.Zero, 0, 0,
                                        Input_Ptr, szId.Length, Output_Ptr, 0, IntPtr.Zero, 0);

            errs = new string[szId.Length];

            for (int i = 0; i < szId.Length; ++i)
            {
                // 这里定义一个ID占64字节
                OrderIDType output = (OrderIDType)Marshal.PtrToStructure(Output_Ptr + i * OrderIDType_size, typeof(OrderIDType));

                errs[i] = output.ID;
            }

            Marshal.FreeHGlobal(Input_Ptr);
            Marshal.FreeHGlobal(Output_Ptr);
        }
Exemplo n.º 5
0
        public string CancelOrder(string[] szIds)
        {
            int OrderIDType_size = Marshal.SizeOf(typeof(OrderIDType));

            IntPtr Input_Ptr = Marshal.AllocHGlobal(OrderIDType_size * szIds.Length);
            IntPtr Output_Ptr = Marshal.AllocHGlobal(OrderIDType_size * szIds.Length);

            // 将结构体写成内存块
            for (int i = 0; i < szIds.Length; ++i)
            {
                OrderIDType _szId = new OrderIDType();
                _szId.ID = szIds[i];
                Marshal.StructureToPtr(_szId, new IntPtr(Input_Ptr.ToInt64() + i * OrderIDType_size), false);
            }

            IntPtr ptr = proxy.XRequest((byte)RequestType.ReqOrderAction, Handle, IntPtr.Zero, 0, 0,
                Input_Ptr, szIds.Length, Output_Ptr, 0, IntPtr.Zero, 0);

            string ret = Marshal.PtrToStringAnsi(ptr);

            Marshal.FreeHGlobal(Input_Ptr);
            Marshal.FreeHGlobal(Output_Ptr);

            return ret;
        }
Exemplo n.º 6
0
        public string CancelOrder(string[] szIds)
        {
            int OrderIDType_size = Marshal.SizeOf(typeof(OrderIDType));

            IntPtr Input_Ptr  = Marshal.AllocHGlobal(OrderIDType_size * szIds.Length);
            IntPtr Output_Ptr = Marshal.AllocHGlobal(OrderIDType_size * szIds.Length);

            // 将结构体写成内存块
            for (int i = 0; i < szIds.Length; ++i)
            {
                OrderIDType _szId = new OrderIDType();
                _szId.ID = szIds[i];
                Marshal.StructureToPtr(_szId, new IntPtr(Input_Ptr.ToInt64() + i * OrderIDType_size), false);
            }

            IntPtr ptr = proxy.XRequest((byte)RequestType.ReqOrderAction, Handle, IntPtr.Zero, 0, 0,
                                        Input_Ptr, szIds.Length, Output_Ptr, 0, IntPtr.Zero, 0);

            string ret = Marshal.PtrToStringAnsi(ptr);

            Marshal.FreeHGlobal(Input_Ptr);
            Marshal.FreeHGlobal(Output_Ptr);

            return(ret);
        }
Exemplo n.º 7
0
        public void CancelQuote(string szId, out string err)
        {
            IntPtr szIdPtr          = Marshal.StringToHGlobalAnsi(szId);
            int    OrderIDType_size = Marshal.SizeOf(typeof(OrderIDType));
            IntPtr OrderIDType_Ptr  = Marshal.AllocHGlobal(OrderIDType_size);

            IntPtr ptr = proxy.XRequest((byte)RequestType.ReqQuoteAction, Handle, IntPtr.Zero, 0, 0,
                                        szIdPtr, 0, OrderIDType_Ptr, 0, IntPtr.Zero, 0);

            err = string.Empty;

            for (int i = 0; i < 1; ++i)
            {
                // 这里定义一个ID占64字节
                OrderIDType output = (OrderIDType)Marshal.PtrToStructure(OrderIDType_Ptr + i * OrderIDType_size, typeof(OrderIDType));

                err = output.ID;
            }

            Marshal.FreeHGlobal(szIdPtr);
            Marshal.FreeHGlobal(OrderIDType_Ptr);
        }