For those in a hurry, this is NOT related to the controversial Dual_EC_DRBG planted inside NIST's SP800-90A.
About the two RNGs:
The Microsoft BCRYPT layer based one is over their C API.
BCryptGenRandomis following NIST SP800-90A'sCTR_DRBG(i.e. uses an approved block cipher, AES, to create random bits). However it is unclear if it uses a hardware random source as seed (or part of the seed)...The Microsoft .NET
RNGCryptoServiceProvideris C# based. Looking at the .NET source code (or here), I see it end up calling the C++ methodCapiNative.GenerateRandomBytes(). There should have been a P/Invoke stub for the C#=>C++ transition but I couldn't find it anywhere in the framework source. So I have no idea how it's actually implemented.
Does anyone have additional information on these two random number generators? Do either/both use HW random seeds (either via diode noise in older intels or the controversial RDRAND in the latest intels).
PS: Not sure it this should be at Security, StackOverflow or Cryptography ...