On Sunday 15 April 2007 08:33:12 pm you wrote:
You need to take WORDS_BIGENDIAN macro into account, not blindly assume that we are running on a LE machine. Something like (as done in other DLLs):
#ifdef WORDS_BIGENDIAN #define GET_BE_WORD(x) (x) #define GET_BE_DWORD(x) (x) #else #define GET_BE_WORD(x) RtlUshortByteSwap(x) #define GET_BE_DWORD(x) RtlUlongByteSwap(x) #endif
I was under the impression we didn't need to worry about architecture issues like that?
Why not use a struct with bit fields to simplify the above check?
I'm not too familiar with how bit-fields work, and given the above, how they behave with endian differences. I'll play around with it and see what I can do, though.