0

件名と同様に、ではすべてが正常に機能しますが、 ->アプリケーションがクラッシュAnyCPUするように変更すると。x86私はWin7x64で作業しています。

編集:

(Exception from HRESULT: 0x80070057 (E_INVALIDARG))"}  

スタック:

   at System.StubHelpers.InterfaceMarshaler.ConvertToManaged(IntPtr pUnk, IntPtr itfMT, IntPtr classMT, Int32 flags)  
   at NAudio.Wave.DirectSoundOut.IDirectSound.CreateSoundBuffer(BufferDescription desc, Object& dsDSoundBuffer, IntPtr pUnkOuter)  
   at NAudio.Wave.DirectSoundOut.InitializeDirectSound()  
   at NAudio.Wave.DirectSoundOut.PlaybackThreadFunc()  
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)  
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)  
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)  
   at System.Threading.ThreadHelper.ThreadStart()
4

1 に答える 1

1

奇妙なことに、注目すべき唯一の入力パラメーターはバッファーの説明 (のインスタンスDSBUFFERDESC) ですが、NAudio 相互運用に関する x64/x86 の問題は見当たりません。セカンダリ バッファ フラグの一部がデバイスでサポートされていない可能性があります。

bufferDesc2.dwFlags = DirectSoundBufferCaps.DSBCAPS_GETCURRENTPOSITION2
    | DirectSoundBufferCaps.DSBCAPS_CTRLPOSITIONNOTIFY
    | DirectSoundBufferCaps.DSBCAPS_GLOBALFOCUS
    | DirectSoundBufferCaps.DSBCAPS_CTRLVOLUME
    | DirectSoundBufferCaps.DSBCAPS_STICKYFOCUS;

スタック トレースに関するもう 1 つの奇妙な点は、エラーがConvertToManaged.へIDirectSoundBufferの呼び出しがCreateSoundBuffer完了するまで、へのキャストを試みます。

あなたのアプリが代わりに WaveOut または WaveOutEvent を使用できない理由はありますか? あなたはそれらがより信頼できると思うかもしれません。

于 2013-01-30T11:20:49.480 に答える