続Enum系関数と富豪的プログラミング

もう一度、Enum系関数の性質を考えてみましょう。

HRESULT WINAPI DirectSoundEnumerate(
  LPDSENUMCALLBACK lpDSEnumCallback,
  LPVOID lpContext
);

列挙はDirectSoundEnumerate内部で行われ、デバイスの数だけlpDSEnumCallbackがコールバックされます。呼び出し前にはデバイスの数は分からないため、この関数は無限個のデバイスを列挙しようとして停止しない可能性があります。
ですが、実際にはそんなことはないわけで、何がしかのリミットがあると思います。逆説的に考えれば、すぐに列挙が終わる程度の数しかありえないからこそ、こういうインタフェースをしているともいえます。
また、列挙するデバイスの数は動的に変化するものですから、関数内部でデバイスのリストのスナップショットを作成しているはずです。このスナップショットの作成にはあまり時間をかけることはできませんから(その間リストがロックされるので)、短時間でコピーできる程度の数しかないのだと思います。
で、何が言いたいかというと、コピーしても大したことないじゃん、と。