It has more regulations.
I've excerpted some of it.
This is my first experience with this kind of content.So I don't know how to deal with it.
Thanks for the expert's help.
const
// Work mode type definition
RCV_WORK_SENDMSG = 4 // Message work mode
// Message subtypes
News_Sha_Ex = 2 // The firsttype message
News_Szn_Ex = 4 // The secondtype message
// Data
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct RCV_REPORT_STRUCTExV3
{
public UInt16 m_cbSize; // Structure size
public Int32 m_time; // Transaction time
public Single m_fHigh; // Maximum
public Single m_fLow; // Minimum
public Single m_fNewPrice; // Latest
public Single m_fVolume; // Production volume
public Single m_fAmount; // Production value
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public Single[] m_fputPrice; // Entry storage price 1,2,3
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public Single[] m_fputVolume; // Entry storage volume 1,2,3
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public Single[] m_ftransPrice; // Transfer application price 1,2,3
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public Single[] m_ftransVolume; // Transfer application volume 1,2,3
public Single m_fputPrice4; // Entry storage price 4
public Single m_fputVolume4; // Entry storage volume 4
public Single m_ftransPrice4; // Transfer application price 4
public Single m_ftransVolume4; // Transfer application volume 4
public Single m_fputPrice5; // Entry storage price 5
public Single m_fputVolume5; // Entry storage volume 5
public Single m_ftransPrice5; // Transfer application price 5
public Single m_ftransVolume5; // Transfer application volume 5
};
}
// Data notification message
// Direct data reference notification message
// wParam = RCV_WPARAM;
// lParam points to the RCV_DATA structure;
// Return 1 if processed, 0 if unprocessed or unable to process
// Note 1:
// The number of records represents the number of data packets of market data and supplementary data (including Header). For file type data, = 1
// Note 2:
// If m_bDISK = FALSE, m_pData is the data buffer pointer
// ******** Data sharing, do not modify data **********
// m_bDISK = TRUE, m_pData is the file storage name of the file. Generally, only large files such as upgrade software use the storage method
// [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct RCV_DATA
{
public int m_wDataType; // File type
public int m_nPacketNum; // Number of records, see Note 1
public RCV_FILE_HEADEx m_File; // File interface
public int m_bDISK; // Whether the file is stored
public IntPtr m_pData;
};
// Tick data ///////////////////////////////////
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct RCV_FENBI_STRUCTEx
{
public int m_lTime; // hhmmss Example: 93056 indicates 9:
public Single m_fHigh; // Maximum
public Single m_fLow; // Minimum
public Single m_fNewPrice; // Latest
public Single m_fVolume; // Production volume
public Single m_fAmount; // Production value
public int m_lStroke; // Reserved
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
public Single[] m_fputPrice; // Entry storage price 1,2,3,4,5
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
public Single[] m_fputVolume; // Entry storage volume 1,2,3,4,5
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
public Single[] m_ftransPrice; // Transfer application price 1,2,3,4,5
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
public Single[] m_ftransVolume; // Transfer application volume 1,2,3,4,5
};
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct RCV_FENBI
{
public UInt16 m_wMarket; // Customer market type
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public char[] m_szLabel; // Customer code, ending with '\0'
public Int32 m_lDate; // Date of tick data FORMAT:
public Single m_fLastClose; // Yesterday's closing price
public Single m_fOpen; // Today's opening price
public UInt16 m_nCount; // Data quantity of m_Data, number of ticks
public IntPtr m_Data; // Length is m_nCount
};
// Message processing program DEMO
protected override void WndProc(ref System.Windows.Forms.Message m)
{
// Detect message type
switch (m.WParam.ToInt32())
{
case RCV_REPORT: // Shared data reference mode, customer market
{
RCV_DATA pHeader = PRCV_DATA(m.lParam);
for (i = 0; i < pHeader.m_nPacketNum - 1; i++)
{
// Data processing
}
}
case RCV_FENBIDATA: {
// Interface-supplemented tick data, which refers to the tick data of the day
break;
}
RCV_MKTTBLDATA :{
// Received code table data
break;
}
RCV_FINANCEDATA :{
// Received financial data
break;
}
}
}
//////////////////////////////////////////////////////////////////////////////////
// APIs
//////////////////////////////////////////////////////////////////////////////////
// Registration function
// Customer initialization
// Entry parameters:
// hWnd Window handle for processing messages
// Msg User-defined message
// nWorkMode Interface work mode, see work mode type definition
// Return parameters:
// 1 Success
// -1 Failure
// Note:
// After registration, the driver will send messages to the processing window; if not registered, data can also be obtained through query
// If the customer receiving is not started, start the customer receiving program
public delegate int Stock_Init(IntPtr nHwnd, int nMsg, int nWorkMode);
// Exit, stop sending messages
// Entry parameters:
// hWnd Window handle for processing messages, the same as the calling entry parameter of Stock_Init
// Return parameters:
// 1 Success
// -1 Failure
public delegate int Stock_Quit(IntPtr nHwnd);
// Activate the receiving program for setting
// Entry parameters:
// bSetup TRUE Show window for setting
// FALSE Hide window
// Return parameters:
// 1 Success
// -1 Failure
public delegate int SetupReceiver(bool bShowWindow);
// Get customer driver information
// Entry parameters:
// nInfo Index
// pBuf Buffer
// Exit parameters:
// nInfo == RI_IDSTRING, return the length of the characteristic string, pBuf is the characteristic string
// Such as: "TongShi_StockDrv_1.00"
// nInfo == RI_IDCODE, return the information card ID number, pBuf is the ID number in string form
// Such as: 0x78001234 "78001234"
// nInfo == RI_VERSION, return the version number of the information card, pBuf is the version in string
// Such as: 1.00 "1.00"
// nInfo == RI_V2SUPPORT, return whether the Shenzhen SJS library structure is supported, pBuf is invalid
public delegate int GetStockDrvInfo(int nInfo,IntPtr pBuf);
public delegate int ReInitStockInfo(); // Reserved function, not currently used