Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

256 lines
8.4 KiB

  1. //==========================================================================;
  2. //
  3. // msacmdrv.h
  4. //
  5. // Copyright (c) 1992-1993 Microsoft Corporation. All Rights Reserved.
  6. //
  7. // Description:
  8. // Audio Compression Manager Public Header File for Drivers
  9. //
  10. // History:
  11. //
  12. //==========================================================================;
  13. #ifndef _INC_ACMDRV
  14. #define _INC_ACMDRV /* #defined if msacmdrv.h has been included */
  15. #ifndef RC_INVOKED
  16. #pragma pack(1) /* Assume byte packing throughout */
  17. #endif /* RC_INVOKED */
  18. #ifdef __cplusplus
  19. extern "C" { /* Assume C declarations for C++ */
  20. #endif /* __cplusplus */
  21. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  22. //
  23. // ACM Driver Version:
  24. //
  25. // the version is a 32 bit number that is broken into three parts as
  26. // follows:
  27. //
  28. // bits 24 - 31: 8 bit _major_ version number
  29. // bits 16 - 23: 8 bit _minor_ version number
  30. // bits 0 - 15: 16 bit build number
  31. //
  32. // this is then displayed as follows:
  33. //
  34. // bMajor = (BYTE)(dwVersion >> 24)
  35. // bMinor = (BYTE)(dwVersion >> 16) &
  36. // wBuild = LOWORD(dwVersion)
  37. //
  38. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  39. #define MAKE_ACM_VERSION(mjr, mnr, bld) (((long)(mjr)<<24)| \
  40. ((long)(mnr)<<16)| \
  41. ((long)bld))
  42. //
  43. //
  44. //
  45. //
  46. //
  47. #define ACMDRVOPENDESC_SECTIONNAME_CHARS
  48. #ifdef _WIN32
  49. typedef struct tACMDRVOPENDESCA
  50. {
  51. DWORD cbStruct; // sizeof(ACMDRVOPENDESC)
  52. FOURCC fccType; // 'audc'
  53. FOURCC fccComp; // sub-type (not used--must be 0)
  54. DWORD dwVersion; // current version of ACM opening you
  55. DWORD dwFlags; //
  56. DWORD dwError; // result from DRV_OPEN request
  57. LPCSTR pszSectionName; // see DRVCONFIGINFO.lpszDCISectionName
  58. LPCSTR pszAliasName; // see DRVCONFIGINFO.lpszDCIAliasName
  59. } ACMDRVOPENDESCA, *PACMDRVOPENDESCA, FAR *LPACMDRVOPENDESCA;
  60. typedef struct tACMDRVOPENDESCW
  61. {
  62. DWORD cbStruct; // sizeof(ACMDRVOPENDESC)
  63. FOURCC fccType; // 'audc'
  64. FOURCC fccComp; // sub-type (not used--must be 0)
  65. DWORD dwVersion; // current version of ACM opening you
  66. DWORD dwFlags; //
  67. DWORD dwError; // result from DRV_OPEN request
  68. LPCWSTR pszSectionName; // see DRVCONFIGINFO.lpszDCISectionName
  69. LPCWSTR pszAliasName; // see DRVCONFIGINFO.lpszDCIAliasName
  70. } ACMDRVOPENDESCW, *PACMDRVOPENDESCW, FAR *LPACMDRVOPENDESCW;
  71. #ifdef _UNICODE
  72. #define ACMDRVOPENDESC ACMDRVOPENDESCW
  73. #define PACMDRVOPENDESC PACMDRVOPENDESCW
  74. #define LPACMDRVOPENDESC LPACMDRVOPENDESCW
  75. #else
  76. #define ACMDRVOPENDESC ACMDRVOPENDESCA
  77. #define PACMDRVOPENDESC PACMDRVOPENDESCA
  78. #define LPACMDRVOPENDESC LPACMDRVOPENDESCA
  79. #endif
  80. #else
  81. typedef struct tACMDRVOPENDESC
  82. {
  83. DWORD cbStruct; // sizeof(ACMDRVOPENDESC)
  84. FOURCC fccType; // 'audc'
  85. FOURCC fccComp; // sub-type (not used--must be 0)
  86. DWORD dwVersion; // current version of ACM opening you
  87. DWORD dwFlags; //
  88. DWORD dwError; // result from DRV_OPEN request
  89. LPCSTR pszSectionName; // see DRVCONFIGINFO.lpszDCISectionName
  90. LPCSTR pszAliasName; // see DRVCONFIGINFO.lpszDCIAliasName
  91. } ACMDRVOPENDESC, *PACMDRVOPENDESC, FAR *LPACMDRVOPENDESC;
  92. #endif
  93. //
  94. //
  95. //
  96. //
  97. //
  98. typedef struct tACMDRVSTREAMINSTANCE
  99. {
  100. DWORD cbStruct;
  101. LPWAVEFORMATEX pwfxSrc;
  102. LPWAVEFORMATEX pwfxDst;
  103. LPWAVEFILTER pwfltr;
  104. DWORD dwCallback;
  105. DWORD dwInstance;
  106. DWORD fdwOpen;
  107. DWORD fdwDriver;
  108. DWORD dwDriver;
  109. HACMSTREAM has;
  110. } ACMDRVSTREAMINSTANCE, *PACMDRVSTREAMINSTANCE, FAR *LPACMDRVSTREAMINSTANCE;
  111. //
  112. // NOTE! this structure must match the ACMSTREAMHEADER in msacm.h but
  113. // defines more information for the driver writing convenience
  114. //
  115. typedef struct tACMDRVSTREAMHEADER FAR *LPACMDRVSTREAMHEADER;
  116. typedef struct tACMDRVSTREAMHEADER
  117. {
  118. DWORD cbStruct;
  119. DWORD fdwStatus;
  120. DWORD dwUser;
  121. LPBYTE pbSrc;
  122. DWORD cbSrcLength;
  123. DWORD cbSrcLengthUsed;
  124. DWORD dwSrcUser;
  125. LPBYTE pbDst;
  126. DWORD cbDstLength;
  127. DWORD cbDstLengthUsed;
  128. DWORD dwDstUser;
  129. DWORD fdwConvert; // flags passed from convert func
  130. LPACMDRVSTREAMHEADER padshNext; // for async driver queueing
  131. DWORD fdwDriver; // driver instance flags
  132. DWORD dwDriver; // driver instance data
  133. //
  134. // all remaining fields are used by the ACM for bookkeeping purposes.
  135. // an ACM driver should never use these fields (though than can be
  136. // helpful for debugging)--note that the meaning of these fields
  137. // may change, so do NOT rely on them in shipping code.
  138. //
  139. DWORD fdwPrepared;
  140. DWORD dwPrepared;
  141. LPBYTE pbPreparedSrc;
  142. DWORD cbPreparedSrcLength;
  143. LPBYTE pbPreparedDst;
  144. DWORD cbPreparedDstLength;
  145. } ACMDRVSTREAMHEADER, *PACMDRVSTREAMHEADER;
  146. //
  147. // structure for ACMDM_STREAM_SIZE message
  148. //
  149. //
  150. typedef struct tACMDRVSTREAMSIZE
  151. {
  152. DWORD cbStruct;
  153. DWORD fdwSize;
  154. DWORD cbSrcLength;
  155. DWORD cbDstLength;
  156. } ACMDRVSTREAMSIZE, *PACMDRVSTREAMSIZE, FAR *LPACMDRVSTREAMSIZE;
  157. //
  158. // structure containing the information for the ACMDM_FORMAT_SUGGEST message
  159. //
  160. //
  161. typedef struct tACMDRVFORMATSUGGEST
  162. {
  163. DWORD cbStruct; // sizeof(ACMDRVFORMATSUGGEST)
  164. DWORD fdwSuggest; // Suggest flags
  165. LPWAVEFORMATEX pwfxSrc; // Source Format
  166. DWORD cbwfxSrc; // Source Size
  167. LPWAVEFORMATEX pwfxDst; // Dest format
  168. DWORD cbwfxDst; // Dest Size
  169. } ACMDRVFORMATSUGGEST, *PACMDRVFORMATSUGGEST, FAR *LPACMDRVFORMATSUGGEST;
  170. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  171. //
  172. //
  173. //
  174. //
  175. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  176. //
  177. //
  178. //
  179. #ifndef WIN32
  180. LRESULT ACMAPI acmApplicationExit(HTASK htask, LPARAM lParam);
  181. BOOL ACMAPI acmHugePageLock(LPBYTE pbArea, DWORD cbBuffer);
  182. void ACMAPI acmHugePageUnlock(LPBYTE pbArea, DWORD cbBuffer);
  183. #endif
  184. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  185. //
  186. // ACM Driver Messages
  187. //
  188. //
  189. //
  190. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  191. #define ACMDM_DRIVER_NOTIFY (ACMDM_BASE + 1)
  192. #define ACMDM_DRIVER_DETAILS (ACMDM_BASE + 10)
  193. #define ACMDM_HARDWARE_WAVE_CAPS_INPUT (ACMDM_BASE + 20)
  194. #define ACMDM_HARDWARE_WAVE_CAPS_OUTPUT (ACMDM_BASE + 21)
  195. #define ACMDM_FORMATTAG_DETAILS (ACMDM_BASE + 25)
  196. #define ACMDM_FORMAT_DETAILS (ACMDM_BASE + 26)
  197. #define ACMDM_FORMAT_SUGGEST (ACMDM_BASE + 27)
  198. #define ACMDM_FILTERTAG_DETAILS (ACMDM_BASE + 50)
  199. #define ACMDM_FILTER_DETAILS (ACMDM_BASE + 51)
  200. #define ACMDM_STREAM_OPEN (ACMDM_BASE + 76)
  201. #define ACMDM_STREAM_CLOSE (ACMDM_BASE + 77)
  202. #define ACMDM_STREAM_SIZE (ACMDM_BASE + 78)
  203. #define ACMDM_STREAM_CONVERT (ACMDM_BASE + 79)
  204. #define ACMDM_STREAM_RESET (ACMDM_BASE + 80)
  205. #define ACMDM_STREAM_PREPARE (ACMDM_BASE + 81)
  206. #define ACMDM_STREAM_UNPREPARE (ACMDM_BASE + 82)
  207. #ifndef RC_INVOKED
  208. #pragma pack() /* Revert to default packing */
  209. #endif /* RC_INVOKED */
  210. #ifdef __cplusplus
  211. } /* End of extern "C" { */
  212. #endif /* __cplusplus */
  213. #endif /* _INC_ACMDRV */