Esempio n. 1
0
        private void ReadLog2()
        {
            IntPtr logRecord = Marshal.AllocHGlobal(m_NumOfLog * Marshal.SizeOf(typeof(BSSDK.BSLogRecordEx)));

            int logTotalCount = 0;
            int logCount      = 0;

            do
            {
                Cursor.Current = Cursors.WaitCursor;

                int result = 0;

                IntPtr buf = new IntPtr(logRecord.ToInt32() + logTotalCount * Marshal.SizeOf(typeof(BSSDK.BSLogRecordEx)));

                if (logTotalCount == 0)
                {
                    result = BSSDK.BS_ReadLogEx(m_Handle, 0, 0, ref logCount, buf);
                }
                else
                {
                    result = BSSDK.BS_ReadNextLogEx(m_Handle, 0, 0, ref logCount, buf);
                }

                if (result != BSSDK.BS_SUCCESS)
                {
                    Marshal.FreeHGlobal(logRecord);

                    MessageBox.Show("Cannot read log records", "Error");

                    Cursor.Current = Cursors.WaitCursor;
                    return;
                }

                logTotalCount += logCount;
            } while (logCount == 8192);

            Cursor.Current = Cursors.WaitCursor;

            logList.Items.Clear();

            for (int i = 0; i < logTotalCount; i++)
            {
                BSSDK.BSLogRecordEx record = (BSSDK.BSLogRecordEx)Marshal.PtrToStructure(new IntPtr(logRecord.ToInt32() + i * Marshal.SizeOf(typeof(BSSDK.BSLogRecordEx))), typeof(BSSDK.BSLogRecordEx));

                DateTime eventTime = new DateTime(1970, 1, 1).AddSeconds(record.eventTime);

                ListViewItem item = logList.Items.Add(eventTime.ToString());
                item.SubItems.Add(record.userID.ToString());
                item.SubItems.Add(GetEventStr(record.eventType));
                item.SubItems.Add(GetTNAStr(record.tnaEvent));
                item.SubItems.Add(GetReaderID(record.deviceID));
                item.SubItems.Add(record.eventType.ToString());
                item.SubItems.Add(record.eventTime.ToString());
            }

            numOfLog.Text = logTotalCount.ToString();

            Marshal.FreeHGlobal(logRecord);
        }