Function RtlGenRandom [src]

Call RtlGenRandom() instead of CryptGetRandom() on Windows https://github.com/rust-lang-nursery/rand/issues/111 https://bugzilla.mozilla.org/show_bug.cgi?id=504270

Prototype

pub fn RtlGenRandom(output: []u8) RtlGenRandomError!void

Parameters

output: []u8

Possible Errors

SystemResources

RtlGenRandom has been known to fail in situations where the system is under heavy load. Unfortunately, it does not call SetLastError, so it is not possible to get more specific error information; it could actually be due to an out-of-memory condition, for example.

Source

pub fn RtlGenRandom(output: []u8) RtlGenRandomError!void { var total_read: usize = 0; var buff: []u8 = output[0..]; const max_read_size: ULONG = maxInt(ULONG); while (total_read < output.len) { const to_read: ULONG = @min(buff.len, max_read_size); if (advapi32.RtlGenRandom(buff.ptr, to_read) == 0) { return error.SystemResources; } total_read += to_read; buff = buff[to_read..]; } }