Why do some Windows functions fail if I pass an unaligned Unicode string?

A customer found that if they passed Unicode strings (which in Windows means strings encoded as UTF-16LE using the two-byte data type wchar_t as code units) which are not on even addresses, then some—but not all—functions fail to accept those strings. Why isn’t this documented? This is one of the

Click here to read the article