std\sys\random/
windows.rs1use crate::sys::c;
2
3#[cfg(not(target_vendor = "win7"))]
4#[inline]
5pub fn fill_bytes(bytes: &mut [u8]) {
6 let ret = unsafe { c::ProcessPrng(bytes.as_mut_ptr(), bytes.len()) };
7 debug_assert_eq!(ret, c::TRUE);
10}
11
12#[cfg(target_vendor = "win7")]
13pub fn fill_bytes(mut bytes: &mut [u8]) {
14 while !bytes.is_empty() {
15 let len = bytes.len().try_into().unwrap_or(u32::MAX);
16 let ret = unsafe { c::RtlGenRandom(bytes.as_mut_ptr().cast(), len) };
17 assert!(ret, "failed to generate random data");
18 bytes = &mut bytes[len as usize..];
19 }
20}