думаю, что если компилятор С++ не видел, что там создан TOKEN_INFO, то это УБ. А он не видел, хотя бы потому, что не видел исходного кода порождающей функции.
Это, конечно же, неверно. А если компилятор не видит, что там барьер памяти, что, можно и перед WriteFile в буфер не писать?