Lỗi DirectX với các hệ thống XP cũ hơn


8

Tôi là một lập trình viên khiếm thị, làm việc trên một trò chơi âm thanh dành cho người mù. Tôi đang sử dụng SlimDX và nó đã được thử nghiệm trên hàng chục hệ thống từ XP đến Win 8.1. Mã của tôi hoạt động tốt trên hầu hết các hệ thống, nhưng tôi gặp lỗi sau khi chạy trên một số hệ thống XP cũ hơn:

vupgraderacer.wav SlimDX.DirectSound.DirectSoundException:

DSERR_INVALIDCALL: Cuộc gọi này không hợp lệ cho trạng thái hiện tại của đối tượng này (-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)

Lỗi tương tự được lặp lại cho mỗi âm thanh mà nó đang cố sử dụng. Đây là mã tôi đang sử dụng để thiết lập thiết bị DS:

DSDevice = SlimDX mới.DirectSound.DirectSound

DSDevice.SetCooperativeLevel (OGw.Handle, SlimDX.DirectSound.CooperativeLevel.N normal)

Tôi nhận thấy có những cờ khác có thể được đặt, nhưng thiết lập cơ bản này đã hoạt động tốt cho đến nay, trừ các hệ thống XP cũ hơn. Đây là bài viết đầu tiên của tôi, vì vậy hy vọng tôi nhập nó đúng cách, nếu không, xin vui lòng cho tôi biết, đôi khi rất khó để biết bạn đang ở đâu hoặc nên ở đâu với một trình đọc màn hình trên các diễn đàn.


3
Chào mừng đến với trang web! Tôi đã chỉnh sửa câu hỏi của bạn một chút để thay đổi định dạng. Nếu bạn gặp bất kỳ khó khăn nào khi sử dụng trang web, vui lòng cho chúng tôi biết về meta .
MichaelHouse

1
Kết quả của việc SetCooperativeLevel()gì? Nó trả về một HRESULT giá trị bất kỳ khác ngoài DS_OKcó thể chỉ ra một vấn đề.
congusbongus

Câu trả lời:


1

Bạn nên kiểm tra kết quả của SetCooperativeLevel ().

Theo tài liệu của phiên bản DirectSound8, đây là các giá trị trả về có thể có:

  • DS_OK DSERR_ALLOCATED
  • DSERR_INVALIDPARAM
  • DSERR_UNINITIALEDED
  • DSERR_UNSUPANCEED

Tìm ra cái nào bạn nhận được đầu tiên. Có lẽ bạn chỉ quên khởi tạo thiết bị âm thanh?

Ngoài ra, trong phần nhận xét có ghi: "Đừng gọi phương thức này nếu có bất kỳ bộ đệm nào bị khóa."

Tài liệu: http://msdn.microsoft.com/en-us/l Library / windows / desktop / microsoft.directx_sdk.idirectsound8.idirectsound8.setcooperat khóe

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.