преобразование Nominal* -> Random* -> Nominal* через reinterpret_cast разрешено, так что компилятор никак не может предполагать, что если Random* передан как параметр в недоступный код, то исходный *(Nominal*) не изменялся
Хмм, в случае GetTokenInformation у нас Nominal это не тип TOKEN_MY_INFO, а массив байт как раз. В этом и заключается особенность. Там не обычная структура, а с хвостом из данных