/*++ Copyright (c) 1999 Microsoft Corporation Module Name: ini.h Abstract: Declares interface for INI wrapper routines. These routines simplify access of INIs by wrapping the Win32 APIs with routines that use pools. Author: 04-Nov-1999 Ovidiu Temereanca (ovidiut) - File creation. Revision History: --*/ // // Types // typedef struct { PCSTR IniFilePath; DWORD OriginalAttributes; } INIFILEA, *PINIFILEA; typedef struct { PCWSTR IniFilePath; DWORD OriginalAttributes; } INIFILEW, *PINIFILEW; typedef struct { PCSTR CurrentSection; PCSTR Sections; } INISECT_ENUMA, *PINISECT_ENUMA; typedef struct { PCWSTR CurrentSection; PCWSTR Sections; } INISECT_ENUMW, *PINISECT_ENUMW; typedef struct { PCSTR CurrentKeyValuePair; PCSTR KeyValuePairs; PCSTR CurrentKey; PCSTR CurrentValue; PSTR Private; } INIKEYVALUE_ENUMA, *PINIKEYVALUE_ENUMA; typedef struct { PCWSTR CurrentKeyValuePair; PCWSTR KeyValuePairs; PCWSTR CurrentKey; PCWSTR CurrentValue; PWSTR Private; } INIKEYVALUE_ENUMW, *PINIKEYVALUE_ENUMW; // // Public function prototypes // BOOL Ini_Init ( VOID ); VOID Ini_Exit ( VOID ); BOOL RealIniFileOpenA ( OUT PINIFILEA IniFile, IN PCSTR IniFileSpec, IN BOOL FileMustExist /*,*/ ALLOCATION_TRACKING_DEF /* , PCSTR File, UINT Line */ ); #define IniFileOpenA(i,path,b) TRACK_BEGIN(BOOL, IniFileOpenA)\ RealIniFileOpenA((i),(path),(b)/*,*/ ALLOCATION_TRACKING_CALL)\ TRACK_END() BOOL RealIniFileOpenW ( OUT PINIFILEW IniFile, IN PCWSTR IniFileSpec, IN BOOL FileMustExist /*,*/ ALLOCATION_TRACKING_DEF /* , PCSTR File, UINT Line */ ); #define IniFileOpenW(i,path,b) TRACK_BEGIN(BOOL, IniFileOpenW)\ RealIniFileOpenW((i),(path),(b)/*,*/ ALLOCATION_TRACKING_CALL)\ TRACK_END() VOID IniFileCloseA ( IN PINIFILEA IniFile ); VOID IniFileCloseW ( IN PINIFILEW IniFile ); BOOL EnumFirstIniSectionA ( OUT PINISECT_ENUMA IniSectEnum, IN PINIFILEA IniFile ); BOOL EnumFirstIniSectionW ( OUT PINISECT_ENUMW IniSectEnum, IN PINIFILEW IniFile ); BOOL EnumNextIniSectionA ( IN OUT PINISECT_ENUMA IniSectEnum ); BOOL EnumNextIniSectionW ( IN OUT PINISECT_ENUMW IniSectEnum ); VOID AbortIniSectionEnumA ( IN OUT PINISECT_ENUMA IniSectEnum ); VOID AbortIniSectionEnumW ( IN OUT PINISECT_ENUMW IniSectEnum ); BOOL EnumFirstIniKeyValueA ( OUT PINIKEYVALUE_ENUMA IniKeyValueEnum, IN PINIFILEA IniFile, IN PCSTR Section ); BOOL EnumFirstIniKeyValueW ( OUT PINIKEYVALUE_ENUMW IniKeyValueEnum, IN PINIFILEW IniFile, IN PCWSTR Section ); BOOL EnumNextIniKeyValueA ( IN OUT PINIKEYVALUE_ENUMA IniKeyValueEnum ); BOOL EnumNextIniKeyValueW ( IN OUT PINIKEYVALUE_ENUMW IniKeyValueEnum ); VOID AbortIniKeyValueEnumA ( IN OUT PINIKEYVALUE_ENUMA IniKeyValueEnum ); VOID AbortIniKeyValueEnumW ( IN OUT PINIKEYVALUE_ENUMW IniKeyValueEnum ); BOOL IniReadValueA ( IN PINIFILEA IniFile, IN PCSTR Section, IN PCSTR Key, OUT PSTR* Value, OPTIONAL OUT PDWORD Chars OPTIONAL ); BOOL IniReadValueW ( IN PINIFILEW IniFile, IN PCWSTR Section, IN PCWSTR Key, OUT PWSTR* Value, OPTIONAL OUT PDWORD Chars OPTIONAL ); VOID IniFreeReadValueA ( IN PCSTR Value ); VOID IniFreeReadValueW ( IN PCWSTR Value ); BOOL IniWriteValueA ( IN PINIFILEA IniFile, IN PCSTR Section, IN PCSTR Key, IN PCSTR Value ); BOOL IniWriteValueW ( IN PINIFILEW IniFile, IN PCWSTR Section, IN PCWSTR Key, IN PCWSTR Value ); // // ANSI/UNICODE mappings. // #ifdef UNICODE #define INIFILE INIFILEW #define INISECT_ENUM INISECT_ENUMW #define INIKEYVALUE_ENUM INIKEYVALUE_ENUMW #define IniFileOpen IniFileOpenW #define IniFileClose IniFileCloseW #define EnumFirstIniSection EnumFirstIniSectionW #define EnumNextIniSection EnumNextIniSectionW #define AbortIniSectionEnum AbortIniSectionEnumW #define EnumFirstIniKeyValue EnumFirstIniKeyValueW #define EnumNextIniKeyValue EnumNextIniKeyValueW #define AbortIniKeyValueEnum AbortIniKeyValueEnumW #define IniReadValue IniReadValueW #define IniFreeReadValue IniFreeReadValueW #define IniWriteValue IniWriteValueW #else #define INIFILE INIFILEA #define INISECT_ENUM INISECT_ENUMA #define INIKEYVALUE_ENUM INIKEYVALUE_ENUMA #define IniFileOpen IniFileOpenA #define IniFileClose IniFileCloseA #define EnumFirstIniSection EnumFirstIniSectionA #define EnumNextIniSection EnumNextIniSectionA #define AbortIniSectionEnum AbortIniSectionEnumA #define EnumFirstIniKeyValue EnumFirstIniKeyValueA #define EnumNextIniKeyValue EnumNextIniKeyValueA #define AbortIniKeyValueEnum AbortIniKeyValueEnumA #define IniReadValue IniReadValueA #define IniFreeReadValue IniFreeReadValueA #define IniWriteValue IniWriteValueA #endif