Seems like that should suffice, assuming that MSDN's definition of "character" is a 32-bit UCS-2 character. I have no clue if MS supports UCS-2 characters that use multiple 32-bit numbers to represent a single character, but I believe such are legal. And if they do support them, I don't know if they call them one character or two, or if they are even consistent about their counts, or their definition of "character" ("That depends on what you mean by 'is'.")
That's a good point - more research would be needed. At least with one function doing all the string memory allocation we've only got one place to change.
Cheers, Jez.