Example #1
0
        public static String ReadValue(String IniFilePath, String Section, String Key)
        {
            StringBuilder temp = new StringBuilder(255);

            KernelImport.GetPrivateProfileString(Section, Key, "", temp, 255, IniFilePath);
            return(temp.ToString());
        }
Example #2
0
 void CloseLogFile(IntPtr hFile)
 {
     if (hFile != IntPtr.Zero)
     {
         KernelImport.CloseHandle(hFile);
     }
 }
Example #3
0
 IntPtr OpenLogFile(String Filename, Boolean SharedWrite)
 {
     if (SharedWrite)
     {
         return(KernelImport.CreateFileA(Filename, FileAccess.Write, FileShare.ReadWrite, IntPtr.Zero, FileMode.OpenOrCreate, FileAttributes.Normal, IntPtr.Zero));
     }
     else
     {
         return(KernelImport.CreateFileA(Filename, FileAccess.Write, FileShare.Read, IntPtr.Zero, FileMode.OpenOrCreate, FileAttributes.Normal, IntPtr.Zero));
     }
 }
Example #4
0
        Boolean IsLogFilePastSizeLimit(IntPtr hFile, Int32 LimitBytes)
        {
            uint CurrentLen = 0;
            uint MoveMethod = 0;

            if (hFile == IntPtr.Zero)
            {
                return(false);
            }

            if (LimitBytes <= 0)
            {
                return(false);
            }

            CurrentLen = KernelImport.SetFilePointer(hFile, 0, out MoveMethod, KernelImport.EMoveMethod.End);

            if (CurrentLen == 0xFFFFFFFF)
            {
                return(false);
            }

            return(CurrentLen > LimitBytes);
        }
Example #5
0
 public static void WriteValue(String IniFilePath, String Section, String Key, String Value)
 {
     KernelImport.WritePrivateProfileString(Section, Key, Value, IniFilePath);
 }
Example #6
0
        void AppendToOpenLogFile(IntPtr hFile, Boolean UseLogPrefix, params object[] Entries)
        {
            StringBuilder sb = null;

            byte[] buffer = null;
            long   Index;
            uint   uintval = 0;

            if (hFile == IntPtr.Zero)
            {
                return;
            }

            sb = new StringBuilder();

            sb.Append(DateTime.Now.ToString(LOGFILE_TIMEFMT) + LOGFILE_DELIMITER);

            if (UseLogPrefix)
            {
                sb.Append(LogMessagePrefix + LOGFILE_DELIMITER);
            }

            if (Entries.Length != 0 || Entries != null)
            {
                foreach (object val in Entries)
                {
                    if (!val.GetType().IsArray)
                    {
                        if (val is String)
                        {
                            sb.Append(val + LOGFILE_DELIMITER);
                        }
                        else
                        {
                            String converted_val;
                            try
                            {
                                converted_val = (String)Convert.ChangeType(val, typeof(String));
                                sb.Append(converted_val + LOGFILE_DELIMITER);
                            }
                            catch (Exception)
                            {
                                // ignore this value and move on ..
                            }
                        }
                    }
                }

                sb.Append(LOGFILE_LINEDELIMITER);

                // move to end of file
                Index = KernelImport.SetFilePointer(hFile, 0, out uintval, KernelImport.EMoveMethod.End);
                if (Index == 0xFFFFFFFF)
                {
                    return;
                }
                try
                {
                    buffer = Encoding.ASCII.GetBytes(sb.ToString());

                    // lock the required portion of file
                    if (KernelImport.LockFile(hFile, (uint)Index, 0, (uint)buffer.Length, 0) == false)
                    {
                        return;
                    }

                    // write and unlock
                    if (!KernelImport.WriteFile(hFile, buffer, (uint)buffer.Length, out uintval, IntPtr.Zero))
                    {
                        Index = KernelImport.GetLastError();
                    }

                    KernelImport.UnlockFile(hFile, (uint)Index, 0, (uint)buffer.Length, 0);
                    KernelImport.FlushFileBuffers(hFile);
                }
                catch (Exception) { }
            }
        }
Example #7
0
        Boolean InitialiseLogging(String Filename, String CyclePath, String CycleFilePrefix, String CycleKind, String CycleArgs, Int32 SizeLimitKB, Boolean CycleOnStart, Boolean CycleOnClose, Boolean LoggingIsEnabled)
        {
            //   CycleKind and CycleArgs Values
            //      hourly      None
            //      n-hourly    Number of hours between Cycling
            //      daily       Hour of day 0-23 (default is midday)
            //      weekly      <DayOfWeek>;<HourOfDay> (DayOfWeek : 1-7 where Mon = 1 and HourOfDay : 0-23)
            //      startup     None
            //      shutdown    None

            long CurrentSize = 0;

            KernelImport.WIN32_FILE_ATTRIBUTE_DATA fileData;

            if (mLogFileHandle != IntPtr.Zero)
            {
                return(false);
            }

            LogFileName      = Filename;
            LogCyclePath     = CyclePath;
            LogCyclePrefix   = CycleFilePrefix;
            LogCycleKind     = CycleKind;
            LogCycleArgs     = CycleArgs;
            CycleOnTerminate = CycleOnClose;

            if (SizeLimitKB > 0)
            {
                LogFileSizeLimit = SizeLimitKB * 1024;
            }
            else
            {
                LogFileSizeLimit = -1;
            }

            if (KernelImport.GetFileAttributesEx(Filename, KernelImport.GET_FILEEX_INFO_LEVELS.GetFileExMaxInfoLevel, out fileData))
            {
                CurrentSize = fileData.nFileSizeLow;
            }
            else
            {
                CurrentSize = 0;
            }

            NextLogCycleTime = NextScheduledTime(DateTime.Now, CycleKind, CycleArgs);
            if (NextLogCycleTime == null)
            {
                NextLogCycleTime = NextScheduledTime(DateTime.Now, "shutdown", "");
            }

            CycleOnStart = (CurrentSize > 0 && (CycleOnStart || DateTime.Compare(NextLogCycleTime, DateTime.Now) < 0 || (LogFileSizeLimit > 0 && CurrentSize > LogFileSizeLimit)));
            if (CycleOnStart)
            {
                CycleFile(LogFileName, CyclePath, CycleFilePrefix, LOGFILE_CYCLETIMEFMT);
            }

            mLogFileHandle = OpenLogFile(LogFileName, false);

            mLoggingEnabled = LoggingIsEnabled;

            return(mLogFileHandle != IntPtr.Zero);
        }