This function writes and then reads a string written to the profile associated with the application STRINGY.EXE.
/* This programs writes and then read string data to a profile. */ /* Some error checking has been omitted for brevity. */ #define INCL_WINSHELLDATA #define INCL_WINERRORS #define INCL_DOSERRORS #include <os2.h> #include <stdio.h> #include <string.h> INT main(VOID) { HAB hab = NULLHANDLE; HINI hini = NULLHANDLE; PSZ pszFileName = "STRINGY.INI"; BOOL rc = TRUE; ULONG i = 0L; PSZ pszAppName = "STRINGY.EXE"; PSZ pszKeyName = "STATUS"; PSZ pszString = "The string is alive."; PSZ pszStringRead = NULL; APIRET ret = NO_ERROR; ULONG ulDataSize = 0L; hab = WinInitialize( 0 ); hini = PrfOpenProfile( hab, pszFileName ); rc = PrfWriteProfileString( hini, pszAppName, pszKeyName, pszString); if(rc == FALSE) { printf("PrfWriteProfileString error code: %X\n", WinGetLastError(hab)); return 1; } /* Retrieve size of string in profile, and allocate memory for it */ rc = PrfQueryProfileSize( hini, pszAppName, pszKeyName, &ulDataSize ); ret = DosAllocMem( (PPVOID)&pszStringRead, ulDataSize, (ULONG)PAG_COMMIT | PAG_READ | PAG_WRITE ); /* Retrieve data string */ rc = PrfQueryProfileString( hini, pszAppName, pszKeyName, (PSZ)"Error Retrieving Data", (PVOID) pszStringRead, ulDataSize ); if(rc==FALSE) { printf("PrfQueryProfileData error code: %X\n", WinGetLastError(hab)); return 1; } printf("Profile String read: '%s'\n", pszStringRead ); PrfCloseProfile( hini ); /* Close the profile */ DosFreeMem( pszStringRead ); /* Free memory */ return NO_ERROR; /* Return to the caller */ }