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()); }
void CloseLogFile(IntPtr hFile) { if (hFile != IntPtr.Zero) { KernelImport.CloseHandle(hFile); } }
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)); } }
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); }
public static void WriteValue(String IniFilePath, String Section, String Key, String Value) { KernelImport.WritePrivateProfileString(Section, Key, Value, IniFilePath); }
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) { } } }
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); }