VisualStudio2010 と Windows2000| メイン |Ubuntu と MovableType と run-periodic-tasks

Windows2000 と rand_s のお話

| コメント(0) | トラックバック(0)

最近の VisualStudio には rand_s という便利な関数があります。主に乱数の初期値として使える関数で、よくある GetTickTime を使った時なんかよりかなり優秀な乱数の種を与えてくれます。

で、MSDN のページや黒翼猫さんのページに書いてあるようにこの関数、Windows 2000 では動きません。

というか、動かないどころか EXE を実行すると「有効な Win32 アプリケーションではありません」とか言われてしまうのです。

で、不思議なのがこの関数、MSDN のページにも書いてあるのですが内部でRtlGenRandomという関数を呼び出します。ところが、この関数の説明を読んでみると、最初に

[The RtlGenRandom function is available for use in the operating systems specified in the Requirements section. It may be altered or unavailable in subsequent versions. Instead, use the CryptGenRandom function.]

とっても意訳

「RtlGenRandom 関数は OS によって使えなかったりするよ。代わりに CryptGenRandom 関数を使ってね!」

……ちょ、おまwwww自分で言っているんだから CryptGenRandom 関数を使えよ。てか、そのおかげで原因がわからず偉い苦労したんだぞwwww

と、ひとしきり頭を痛めた日でした。

な~んで RtlGenRandom で実装しているんだろうなぁ。VisualStudio2010 でも同じだし。

No TrackBacks

TrackBack URL: http://denchu.jp/cgi-bin/movabletype/mt-tb.cgi/1

コメントを投稿する