public void Parse() { sections.Clear(); var res = new byte[0x4000]; var ret = GetPrivateProfileString(null, null, "", res, res.Length, path); var str = Encoding.ASCII.GetString(res); var strSections = str.Trim('\0').Split('\0'); foreach (var strSec in strSections) { var section = new IniSection(strSec); Array.Clear(res, 0, res.Length); ret = GetPrivateProfileString(strSec, null, "", res, res.Length, path); var strKeys = Encoding.ASCII.GetString(res).Trim('\0').Split('\0'); foreach (var strKey in strKeys) { Array.Clear(res, 0, res.Length); ret = GetPrivateProfileString(strSec, strKey, "", res, res.Length, path); var value = Encoding.ASCII.GetString(res).Trim('\0'); section.Add(strKey, value); } sections.Add(section); } }