It looks like a good place to use broken().
I don't think it's broken on win98; it looks as though they do 4 byte alignment prior to the data structure in win9x, and winnt and on seem to do 8 byte alignment prior to the data chunk. That results in a 4 byte difference.
Cheers,
Jeremy