dsound.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. // dsound.h
  2. #ifndef dsound_h
  3. #define dsound_h
  4. #define DSBCAPS_PRIMARYBUFFER 0x00000001
  5. #define DSBCAPS_STATIC 0x00000002
  6. #define DSBCAPS_LOCHARDWARE 0x00000004
  7. #define DSBCAPS_LOCSOFTWARE 0x00000008
  8. #define DSBCAPS_CTRL3D 0x00000010
  9. #define DSBCAPS_CTRLFREQUENCY 0x00000020
  10. #define DSBCAPS_CTRLPAN 0x00000040
  11. #define DSBCAPS_CTRLVOLUME 0x00000080
  12. #define DSBCAPS_CTRLPOSITIONNOTIFY 0x00000100
  13. #define DSBCAPS_CTRLFX 0x00000200
  14. #define DSBCAPS_STICKYFOCUS 0x00004000
  15. #define DSBCAPS_GLOBALFOCUS 0x00008000
  16. #define DSBCAPS_GETCURRENTPOSITION2 0x00010000
  17. #define DSBCAPS_MUTE3DATMAXDISTANCE 0x00020000
  18. #define DSBCAPS_LOCDEFER 0x00040000
  19. #define DSBPLAY_LOOPING 0x00000001
  20. #define DSBPLAY_LOCHARDWARE 0x00000002
  21. #define DSBPLAY_LOCSOFTWARE 0x00000004
  22. #define DSBPLAY_TERMINATEBY_TIME 0x00000008
  23. #define DSBPLAY_TERMINATEBY_DISTANCE 0x000000010
  24. #define DSBPLAY_TERMINATEBY_PRIORITY 0x000000020
  25. #define DSBLOCK_FROMWRITECURSOR 0x00000001
  26. #define DSBLOCK_ENTIREBUFFER 0x00000002
  27. #define DSSCL_NORMAL 0x00000001
  28. #define DSSCL_PRIORITY 0x00000002
  29. #define DSSCL_EXCLUSIVE 0x00000003
  30. #define DSSCL_WRITEPRIMARY 0x00000004
  31. struct DSCAPS{
  32. DWORD dwSize;
  33. DWORD dwFlags;
  34. DWORD dwMinSecondarySampleRate;
  35. DWORD dwMaxSecondarySampleRate;
  36. DWORD dwPrimaryBuffers;
  37. DWORD dwMaxHwMixingAllBuffers;
  38. DWORD dwMaxHwMixingStaticBuffers;
  39. DWORD dwMaxHwMixingStreamingBuffers;
  40. DWORD dwFreeHwMixingAllBuffers;
  41. DWORD dwFreeHwMixingStaticBuffers;
  42. DWORD dwFreeHwMixingStreamingBuffers;
  43. DWORD dwMaxHw3DAllBuffers;
  44. DWORD dwMaxHw3DStaticBuffers;
  45. DWORD dwMaxHw3DStreamingBuffers;
  46. DWORD dwFreeHw3DAllBuffers;
  47. DWORD dwFreeHw3DStaticBuffers;
  48. DWORD dwFreeHw3DStreamingBuffers;
  49. DWORD dwTotalHwMemBytes;
  50. DWORD dwFreeHwMemBytes;
  51. DWORD dwMaxContigFreeHwMemBytes;
  52. DWORD dwUnlockTransferRateHwBuffers;
  53. DWORD dwPlayCpuOverheadSwBuffers;
  54. DWORD dwReserved1;
  55. DWORD dwReserved2;
  56. };
  57. typedef DSCAPS *LPDSCAPS;
  58. struct DSBUFFERDESC{
  59. DWORD dwSize;
  60. DWORD dwFlags;
  61. DWORD dwBufferBytes;
  62. DWORD dwReserved;
  63. LPWAVEFORMATEX lpwfxFormat;
  64. GUID guid3DAlgorithm;
  65. };
  66. typedef DSBUFFERDESC *LPDSBUFFERDESC;
  67. typedef const DSBUFFERDESC *LPCDSBUFFERDESC;
  68. struct DSBPOSITIONNOTIFY{
  69. DWORD dwOffset;
  70. HANDLE hEventNotify;
  71. };
  72. typedef DSBPOSITIONNOTIFY *LPDSBPOSITIONNOTIFY;
  73. typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY;
  74. typedef void *LPDSBCAPS;
  75. typedef struct IDirectSound *LPDIRECTSOUND;
  76. typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER;
  77. #undef INTERFACE
  78. #define INTERFACE IDirectSoundBuffer
  79. DECLARE_INTERFACE_(IDirectSoundBuffer, IUnknown){
  80. STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
  81. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  82. STDMETHOD_(ULONG,Release) (THIS) PURE;
  83. STDMETHOD(GetCaps) (THIS_ LPDSBCAPS) PURE;
  84. STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD, LPDWORD) PURE;
  85. STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX, DWORD, LPDWORD) PURE;
  86. STDMETHOD(GetVolume) (THIS_ LPLONG) PURE;
  87. STDMETHOD(GetPan) (THIS_ LPLONG) PURE;
  88. STDMETHOD(GetFrequency) (THIS_ LPDWORD) PURE;
  89. STDMETHOD(GetStatus) (THIS_ LPDWORD) PURE;
  90. STDMETHOD(Initialize) (THIS_ LPDIRECTSOUND, LPCDSBUFFERDESC) PURE;
  91. STDMETHOD(Lock) (THIS_ DWORD, DWORD, LPVOID *, LPDWORD, LPVOID *, LPDWORD, DWORD) PURE;
  92. STDMETHOD(Play) (THIS_ DWORD, DWORD, DWORD) PURE;
  93. STDMETHOD(SetCurrentPosition) (THIS_ DWORD) PURE;
  94. STDMETHOD(SetFormat) (THIS_ LPCWAVEFORMATEX) PURE;
  95. STDMETHOD(SetVolume) (THIS_ LONG) PURE;
  96. STDMETHOD(SetPan) (THIS_ LONG) PURE;
  97. STDMETHOD(SetFrequency) (THIS_ DWORD) PURE;
  98. STDMETHOD(Stop) (THIS) PURE;
  99. STDMETHOD(Unlock) (THIS_ LPVOID, DWORD, LPVOID, DWORD) PURE;
  100. STDMETHOD(Restore) (THIS) PURE;
  101. };
  102. #undef INTERFACE
  103. #define INTERFACE IDirectSound
  104. DECLARE_INTERFACE_(IDirectSound, IUnknown){
  105. STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
  106. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  107. STDMETHOD_(ULONG,Release) (THIS) PURE;
  108. STDMETHOD(CreateSoundBuffer) (THIS_ LPCDSBUFFERDESC, LPDIRECTSOUNDBUFFER *, LPUNKNOWN) PURE;
  109. STDMETHOD(GetCaps) (THIS_ LPDSCAPS) PURE;
  110. STDMETHOD(DuplicateSoundBuffer) (THIS_ LPDIRECTSOUNDBUFFER, LPDIRECTSOUNDBUFFER *) PURE;
  111. STDMETHOD(SetCooperativeLevel) (THIS_ HWND, DWORD) PURE;
  112. STDMETHOD(Compact) (THIS) PURE;
  113. STDMETHOD(GetSpeakerConfig) (THIS_ LPDWORD) PURE;
  114. STDMETHOD(SetSpeakerConfig) (THIS_ DWORD) PURE;
  115. STDMETHOD(Initialize) (THIS_ LPGUID) PURE;
  116. };
  117. #undef INTERFACE
  118. #define INTERFACE IDirectSoundNotify
  119. DECLARE_INTERFACE_(IDirectSoundNotify, IUnknown)
  120. {
  121. // IUnknown methods
  122. STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
  123. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  124. STDMETHOD_(ULONG,Release) (THIS) PURE;
  125. // IDirectSoundNotify methods
  126. STDMETHOD(SetNotificationPositions) (THIS_ DWORD dwPositionNotifies, LPCDSBPOSITIONNOTIFY pcPositionNotifies) PURE;
  127. };
  128. const IID IID_IDirectSoundNotify={0xb0210783,0x89cd,0x11d0,{0xaf,0x8,0x0,0xa0,0xc9,0x25,0xcd,0x16}};
  129. #endif