古いXPシステムでのDirectXエラー


8

私は視覚障害者向けのオーディオゲームに取り組んでいる視覚障害者プログラマーです。私はSlimDXを使用しており、XPからWin 8.1までの数十のシステムでテストされています。私のコードはほとんどのシステムで問題なく機能しますが、少数の古いXPシステムでは実行時に次のエラーが発生します。

vupgraderacer.wav SlimDX.DirectSound.DirectSoundException:

DSERR_INVALIDCALL:この呼び出しは、このオブジェクトの現在の状態では無効です(-2005401550)

at SlimDX.Result.Throw[T](Object dataKey, Object dataValue)
at SlimDX.Result.Record[T](Int32 hr, Boolean failed, Object dataKey, Object dataValue)
at SlimDX.DirectSound.SecondarySoundBuffer..ctor(DirectSound device, SoundBufferDescription description)
at RR.Sound..ctor(String fileName)

同じエラーが、使用しようとするサウンドごとに繰り返されます。DSデバイスのセットアップに使用しているコードは次のとおりです。

dsDevice = New SlimDX.DirectSound.DirectSound

dsDevice.SetCooperativeLevel(OGw.Handle、SlimDX.DirectSound.CooperativeLevel.Normal)

設定できるフラグは他にもあることは承知していますが、この基本的な設定は、これまでのところ、古いXPシステムを除いてうまく機能しています。これは私の最初の投稿なので、正しく入力してほしいと思います。そうでない場合は、お知らせください。フォーラムのスクリーンリーダーを使用している場所やスクリーンリーダーを使用している場所を特定するのが難しい場合があります。


3
サイトへようこそ!書式を変更するために質問を少し編集しました。このサイトを使用して問題が発生した場合は、metaでお知らせください。
MichaelHouse

1
の結果はSetCooperativeLevel()何ですか?問題を示す可能性があるHRESULT 値以外の値を返すので、DS_OK
congusbongus 2013

回答:


1

SetCooperativeLevel()の結果を確認する必要があります。

DirectSound8バージョンのドキュメントによると、これらは可能な戻り値です。

  • DS_OK DSERR_ALLOCATED
  • DSERR_INVALIDPARAM
  • DSERR_UNINITIALIZED
  • DSERR_UNSUPPORTED

あなたが最初に得るものを見つけてください。サウンドデバイスを初期化するのを忘れたのでしょうか?

また、備考セクションでは、「バッファがロックされている場合はこのメソッドを呼び出さないでください」と述べています。

ドキュメント:http : //msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.idirectsound8.idirectsound8.setcooperativelevel%28v=vs.85%29.aspx

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.