Steven,
Casting through a union is undefined behavior. :(.
Seems, like I forgot the signature... Another way to transfer the bytes
would be:
union bytes2seed
{
uint64_t seed_;
char bytes_[sizeof(uint64_t)];
};
bytes2seed converter;
Now one can pass &converter.bytes_[0] to CryptGenRandom. This does not
require an additional memcpy call.