This function writes, and subsequently reads, the profile data associated with application SAMPLE.EXE.
/* Write and read binary data to a profile. Some return code */ /* checking omitted for brevity. */ #define INCL_WINSHELLDATA #define INCL_WINERRORS #define INCL_DOSERRORS #include <os2.h> #include <stdio.h> #include <string.h> #define BUFSIZE 7 INT main(VOID) { HAB hab = NULLHANDLE; /* Window handle */ HINI hini = NULLHANDLE; /* INI file handle */ PSZ pszFileName = "PROFILE.INI"; /* Name of profile */ BOOL rc = FALSE; /* Return code */ PSZ pszAppName = "SAMPLE.EXE"; /* Application name */ PSZ pszKeyName = "BINARY_DATA"; /* Data key name */ APIRET ret = NO_ERROR; /* API return code */ PBYTE pData = NULL; /* Pointer to data buffer */ ULONG ulDataSize = 0; /* Size of data to read */ INT idx = 0; /* Loop index */ hab = WinInitialize( 0 ); hini = PrfOpenProfile( hab, pszFileName ); /* Open INI file */ /* Allocate Memory for binary data to be written and read */ ret = DosAllocMem( (PPVOID)&pData, sizeof(BYTE)*80, (ULONG)PAG_COMMIT | PAG_READ | PAG_WRITE ); /* Initialize binary data and then write it to profile */ for(idx = 0; idx < BUFSIZE; idx++) { pData[idx] = idx+65; } rc = PrfWriteProfileData( hini, pszAppName, pszKeyName, (PVOID)pData, (ULONG)BUFSIZE ); if(rc == FALSE) { printf("PrfWriteProfileData error code: %X\n", WinGetLastError(hab)); return 1; } /* Put junk in buffer so we can see if read is successful */ for(idx = 0; idx < BUFSIZE; idx++) { pData[idx] = idx; } /* Retrieve size of data and then get data */ rc = PrfQueryProfileSize( hini, pszAppName, pszKeyName, &ulDataSize ); rc = PrfQueryProfileData( hini, pszAppName, pszKeyName, (PVOID)pData, &ulDataSize); if(rc==FALSE) { printf("PrfQueryProfileData error code: %X\n", WinGetLastError(hab)); return 1; } printf("Profile Data Read:"); for(idx=0; idx < ulDataSize; idx++) printf("%c", pData[idx]); printf("\n"); PrfCloseProfile(hini); /* Close profile */ DosFreeMem(pData); /* Free memory */ return NO_ERROR; /* Phone home <g> */ }