views:

32

answers:

1

I'm trying to write an INI file using the WritePrivateProfileString and WritePrivateProfileStruct functions.

I found that when the byte count is relatively low, WritePrivateProfileStruct and GetPrivateProfileStruct work fine, but with a higher byte count (62554 bytes in my case), the Write function seems to work but the Get function doesn't.

I haven't found any size limit for these functions on the MS documentation. Why is this happening?

+2  A: 

Yes, I repro. The largest buffer I can read back is 32766 bytes. Larger values produce ERROR_BAD_LENGTH. With the checksum and the terminating zero, looks to me that it uses an internal buffer that is (32766+2) * 2 = 65536 bytes long. Makes somewhat sense, this is a legacy 16-bit API.

You really ought to consider using a regular file. But a workaround is to split the buffer in two.

Hans Passant