Windows Vista, Windows 7で既定の再生デバイスを変えるプログラムを書くにはどうすればいいのか調べた

XPで既定のデバイスを変更するには、waveOutMessage関数でDRVM_MAPPER_PREFERRED_SETメッセージを送りますが、Vista, 7でそれをやるとMMSYSERR_NOTSUPPORTEDが返ってきてしまい、変更できません。
ググったら以下のページを見つけました。

英語が読めないのが残念ですが、結論としてSetting default audio device in Windowsというページにソースコードが置いてありました。

ポイントはpPolicyConfig->SetDefaultEndpoint(devIDmod, role);のところで、devIDmodにHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render下にあるデバイスのGUIDの前に{0.0.0.00000000}.をつけたものを指定するということです。GUIDがどのデバイスに対応しているのかはGUID下のProperties内にあります。