JXINIFile.h
上传用户:dengkfang
上传日期:2008-12-30
资源大小:5233k
文件大小:11k
源码类别:

CA认证

开发平台:

Visual C++

  1. /************************************
  2.   REVISION LOG ENTRY
  3.   Written and Revision By: Zhang, Zhefu
  4.   Contact: codetiger@hotmail
  5.   URL: http://www.chi.c.dendai.ac.jp/~zhang/index.htm
  6.   Revised on 2001/09/27 in FujiSoftABC Ltd. Japan
  7.   Comment: JXINIFile Header File
  8.  ************************************/
  9. #ifndef JX_INI_FILE
  10. #define JX_INI_FILE
  11. //
  12. //namespace jxapi
  13. //{
  14. #ifdef _UNICODE
  15. #define JXGetPrivateProfileString    JXGetPrivateProfileStringW
  16. #define JXWritePrivateProfileString  JXWritePrivateProfileStringW
  17.     #define JXRenameSectionEx            JXRenameSectionExW
  18.     #define JXCopySectionExW             JXCopySectionExW
  19. #else
  20.     #define JXGetPrivateProfileString    JXGetPrivateProfileStringA
  21. #define JXWritePrivateProfileString  JXWritePrivateProfileStringA
  22. #endif /* !UNICODE */
  23. typedef enum tagINIControlCode
  24. {
  25. setSectionMapDirty = 0,  //Mark the Section Map out-of-date
  26.     lockSectionMap = 1,      //Prevent Update Section Map
  27. unlockSectionMap = 2,    //Permit Update Section Map
  28. updateSectionMap = 3,    //Update Section Map
  29. } INIControlCode;
  30. #define INI_SET_DIRTY_MAP  0
  31. #define INI_SET_LOCK_MAP   1
  32. #define INI_SET_UNLOCK_MAP 2
  33. #define INI_UPDATE_MAP     3
  34. //?????---Warning: Using namespace for WinAPI have the same name
  35. extern DWORD ControlINI(DWORD dwControl);
  36.   
  37. //UNICODE VERSION
  38. extern BOOL JXRenameSectionExW(
  39.   LPCWSTR lpAppName,        // section name
  40.   LPCWSTR lpNewName,        // new section name
  41.   LPCWSTR lpFileName        // initialization file name
  42.  );
  43. extern BOOL JXCopySectionExW(
  44.   LPCWSTR lpAppName,        // section name
  45.   LPCWSTR lpNewName,        // new section name
  46.   LPCWSTR lpFileName        // initialization file name
  47.  );
  48. extern DWORD JXGetPrivateProfileStringW(
  49.   LPCWSTR lpAppName,        // section name
  50.   LPCWSTR lpKeyName,        // key name
  51.   LPCWSTR lpDefault,        // default string
  52.   LPWSTR lpReturnedString,  // destination buffer
  53.   DWORD nSize,              // size of destination buffer
  54.   LPCWSTR lpFileName        // initialization file name
  55.  );
  56. //Warning: Using namespace for WinAPI have the same name
  57. extern BOOL JXWritePrivateProfileStringW(
  58.   LPCWSTR lpAppName,  // section namen
  59.   LPCWSTR lpKeyName,  // key name
  60.   LPCWSTR lpString,   // string to add
  61.   LPCWSTR lpFileName  // initialization file
  62.  );
  63. //ANSI VERSION
  64. extern DWORD JXGetPrivateProfileStringA(
  65.   LPCSTR lpAppName,        // section name
  66.   LPCSTR lpKeyName,        // key name
  67.   LPCSTR lpDefault,        // default string
  68.   LPSTR lpReturnedString,  // destination buffer
  69.   DWORD nSize,              // size of destination buffer
  70.   LPCSTR lpFileName        // initialization file name
  71.  );
  72. //Warning: Using namespace for WinAPI have the same name
  73. extern BOOL JXWritePrivateProfileStringA(
  74.   LPCSTR lpAppName,  // section namen
  75.   LPCSTR lpKeyName,  // key name
  76.   LPCSTR lpString,   // string to add
  77.   LPCSTR lpFileName  // initialization file
  78.  );
  79. //Flush Memory Data To Disk File and Close File Handle
  80. extern BOOL JXUnloadPrivateProfile(); 
  81. //}
  82. //---end namespace
  83. #define JXMegaByte 1024 * 1024  //1 Mb
  84. #define JXPage     64 * 1024    //Win2000 ---- 1 Page = 64 Kb 
  85. #define JXFlushIncrement  JXMegaByte  //1Mb
  86. //Debug User
  87. #define chSTR2(x)    #x
  88. #define chSTR(x) chSTR2(x)
  89. #define chMSG(desc) message(__FILE__ "(" chSTR(__LINE__) "):" #desc)
  90. #include <afxcoll.h> //To Use CMap
  91. class CJXINIFile
  92. {
  93. public:
  94. //new Func
  95. //return FALSE if lpAppName noe exist
  96. BOOL RenameSectionExW(
  97.        LPCWSTR lpAppName,        // section name
  98.        LPCWSTR lpNewName,        // new section name
  99.        LPCWSTR lpFileName);        // initialization file name
  100. //return FALSE if lpNewName already exist, lpAppName not Exist
  101.     BOOL CopySectionExW(
  102.        LPCWSTR lpAppName,        // section name
  103.        LPCWSTR lpNewName,        // new section name
  104.        LPCWSTR lpFileName);        // initialization file name
  105.     ////in WCHARs, return 0 when err, Section Map Version
  106.     UINT GetSectionSizeExW(
  107.    LPCWSTR lpAppName,        // section name
  108.        LPCWSTR lpFileName);        // initialization file name
  109. ////in WCHARs, return 0 when err,
  110. UINT GetSectionSizeW(
  111.    LPCWSTR lpAppName,        // section name
  112.        LPCWSTR lpFileName);        // initialization file name
  113. //map mode extension
  114. CMapStringToPtr m_mapSection;  //Map Section To LPVOID 
  115. void UpdateMapA();
  116. void UpdateMapW();
  117. void ResizeMap(int nNewSize); //re-calulate the map class
  118. BOOL m_bSectionMapDirty; 
  119.     BOOL m_bSectionMapLock;
  120. //--------------------------------------------------
  121. DWORD DeleteSectionExW(
  122.  LPCWSTR lpAppName        // section name
  123.     );
  124. DWORD DeleteKeyExW(
  125.          LPCWSTR lpAppName,  // section name
  126.          LPCWSTR lpKeyName  // key name
  127.     );
  128. DWORD DeleteSectionW(
  129.  LPCWSTR lpAppName        // section name
  130.     );
  131. DWORD DeleteKeyW(
  132.          LPCWSTR lpAppName,  // section name
  133.          LPCWSTR lpKeyName  // key name
  134.     );
  135. DWORD DeleteSectionExA(
  136.  LPCSTR lpAppName        // section name
  137.     );
  138. DWORD DeleteKeyExA(
  139.          LPCSTR lpAppName,  // section name
  140.          LPCSTR lpKeyName  // key name
  141.     );
  142. DWORD DeleteSectionA(
  143.  LPCSTR lpAppName        // section name
  144.     );
  145. DWORD DeleteKeyA(
  146.          LPCSTR lpAppName,  // section name
  147.          LPCSTR lpKeyName  // key name
  148.     );
  149. //Section Pointer Mapped Function 
  150. DWORD CJXINIFile::GetSectionsExA(
  151.          LPSTR lpReturnedString,  // destination buffer
  152.          DWORD nSize, // size of destination buffer, In WCHAR
  153.          LPCSTR lpFileName        // initialization file name
  154.     );
  155. DWORD GetSectionsExW(
  156.          LPWSTR lpReturnedString,  // destination buffer
  157.          DWORD nSize,              // size of destination buffer
  158.          LPCWSTR lpFileName        // initialization file name
  159.     );
  160. DWORD GetKeysExA(
  161.  LPCSTR lpAppName,        // section name
  162.          LPSTR lpReturnedString,  // destination buffer
  163.          DWORD nSize,              // size of destination buffer
  164.          LPCSTR lpFileName        // initialization file name
  165.     );
  166. DWORD GetKeysExW(
  167.          LPCWSTR lpAppName,        // section name
  168.          LPWSTR lpReturnedString,  // destination buffer
  169.          DWORD nSize,              // size of destination buffer
  170.          LPCWSTR lpFileName        // initialization file name
  171.     );
  172. UINT GetKeyExA(LPSTR pHead, UINT uSize, 
  173. LPCSTR szSection, LPCSTR szKey, UINT& posSection);
  174.     UINT GetKeyExW(LPWSTR pHead, UINT uSize, 
  175. LPCWSTR szSection, LPCWSTR szKey, UINT& posSection);
  176. DWORD GetPrivateProfileStringExA(
  177.          LPCSTR lpAppName,        // section name
  178.          LPCSTR lpKeyName,        // key name
  179.          LPCSTR lpDefault,        // default string
  180.          LPSTR lpReturnedString,  // destination buffer
  181.          DWORD nSize,              // size of destination buffer
  182.          LPCSTR lpFileName        // initialization file name
  183.     );
  184. DWORD GetPrivateProfileStringExW(
  185.          LPCWSTR lpAppName,        // section name
  186.          LPCWSTR lpKeyName,        // key name
  187.          LPCWSTR lpDefault,        // default string
  188.          LPWSTR lpReturnedString,  // destination buffer
  189.          DWORD nSize,              // size of destination buffer
  190.          LPCWSTR lpFileName        // initialization file name
  191.     );
  192. BOOL WritePrivateProfileStringExA(
  193.          LPCSTR lpAppName,  // section name
  194.          LPCSTR lpKeyName,  // key name
  195.          LPCSTR lpString,   // string to add
  196.          LPCSTR lpFileName  // initialization file
  197.     );
  198. BOOL WritePrivateProfileStringExW(
  199.          LPCWSTR lpAppName,  // section name
  200.          LPCWSTR lpKeyName,  // key name
  201.          LPCWSTR lpString,   // string to add
  202.          LPCWSTR lpFileName  // initialization file
  203.     );
  204. //If Programm Crashed Last Time, Cut the Zero Part Left on the Disk
  205. void CutZeroTail();
  206. BOOL UnloadIniFile();
  207. //0 -- Default,  1 -- ANSI, 2 -- UNICODE
  208. BOOL m_bUnicode;
  209. BOOL LoadIniFile(CString strFilename, DWORD dwMode = 0);
  210. CJXINIFile();
  211. ~CJXINIFile(); 
  212. //UNICODE VERSION
  213. UINT GetKeyW(LPWSTR pHead, UINT uSize, 
  214. LPCWSTR szSection, LPCWSTR szKey, UINT& posSection);
  215. DWORD GetPrivateProfileStringW(
  216.          LPCWSTR lpAppName,        // section name
  217.          LPCWSTR lpKeyName,        // key name
  218.          LPCWSTR lpDefault,        // default string
  219.          LPWSTR lpReturnedString,  // destination buffer
  220.          DWORD nSize,              // size of destination buffer
  221.          LPCWSTR lpFileName        // initialization file name
  222.     );
  223. BOOL WritePrivateProfileStringW(
  224.          LPCWSTR lpAppName,  // section name
  225.          LPCWSTR lpKeyName,  // key name
  226.          LPCWSTR lpString,   // string to add
  227.          LPCWSTR lpFileName  // initialization file
  228.     );
  229. DWORD GetSectionsW(
  230.          LPWSTR lpReturnedString,  // destination buffer
  231.          DWORD nSize,              // size of destination buffer
  232.          LPCWSTR lpFileName        // initialization file name
  233.     );
  234. DWORD GetKeysW(
  235.          LPCWSTR lpAppName,        // section name
  236.          LPWSTR lpReturnedString,  // destination buffer
  237.          DWORD nSize,              // size of destination buffer
  238.          LPCWSTR lpFileName        // initialization file name
  239.     );
  240. //ANSI VERSION
  241. UINT GetKeyA(LPSTR pHead, UINT uSize, 
  242. LPCSTR szSection, LPCSTR szKey, UINT& posSection);
  243. DWORD GetPrivateProfileStringA(
  244.          LPCSTR lpAppName,        // section name
  245.          LPCSTR lpKeyName,        // key name
  246.          LPCSTR lpDefault,        // default string
  247.          LPSTR lpReturnedString,  // destination buffer
  248.          DWORD nSize,              // size of destination buffer
  249.          LPCSTR lpFileName        // initialization file name
  250.     );
  251. BOOL WritePrivateProfileStringA(
  252.          LPCSTR lpAppName,  // section name
  253.          LPCSTR lpKeyName,  // key name
  254.          LPCSTR lpString,   // string to add
  255.          LPCSTR lpFileName  // initialization file
  256.     );
  257. DWORD GetSectionsA(
  258.          LPSTR lpReturnedString,  // destination buffer
  259.          DWORD nSize,              // size of destination buffer
  260.          LPCSTR lpFileName        // initialization file name
  261.     );
  262. DWORD GetKeysA(
  263.          LPCSTR lpAppName,        // section name
  264.          LPSTR lpReturnedString,  // destination buffer
  265.          DWORD nSize,              // size of destination buffer
  266.          LPCSTR lpFileName        // initialization file name
  267.     );
  268. private:
  269. CString m_strFilename;
  270. HANDLE  m_hFile;  //File handle
  271. HANDLE  m_hMMF;   //Memory-Map File Handle
  272. DWORD   m_dwSize; //Current Open File Size in BYTEs
  273. DWORD   m_dwUseSize; //Curent Using Size in BYTEs,
  274.                      //not including heading 2 byte!!!!
  275. //m_dwSize <= m_dwUseSize <= m_dwSize + JXFlushIncrement
  276. LPVOID  m_pData;  //MMF pointer
  277. LPVOID  m_pTrueData;  //MMF pointer
  278. BOOL    m_bDirty;  //Modified? 
  279. };
  280. #endif