Source code of Windows XP (NT5)
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.

2306 lines
42 KiB

  1. //==========================================================================;
  2. //
  3. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  4. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
  5. // TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR
  6. // A PARTICULAR PURPOSE.
  7. //
  8. // Copyright (C) 1993 - 1997 Microsoft Corporation. All Rights Reserved.
  9. //
  10. //--------------------------------------------------------------------------;
  11. //
  12. // midspids.c
  13. //
  14. //
  15. // Description:
  16. //
  17. // !!! WARNING DANGER WARNING DANGER WARNING DANGER WARNING DANGER !!!
  18. //
  19. // This code assumes that the receiving buffers are large enough
  20. // to contain the largest Mid and Pid--so if some of the strings get
  21. // obnoxiously long, make sure you update the following defines in
  22. // MMCAPS.H:
  23. //
  24. // MMCAPS_MAX_STRING_MID_CHARS
  25. // MMCAPS_MAX_STRING_PID_CHARS
  26. //
  27. // Also, this code is horribly disgusting. Its purpose is to convert
  28. // Manufacturer specific Product Id's to human readable text. And
  29. // since no standard was defined on how to allocate these Id's,
  30. // all kinds of inconsistent schemes emerged.
  31. //
  32. // Therefore, I chose the brute force approach. You are more than
  33. // welcome to clean this up by finding patterns, etc for each
  34. // manufacturer--I have better things to do.
  35. //
  36. // !!! WARNING DANGER WARNING DANGER WARNING DANGER WARNING DANGER !!!
  37. //
  38. // History:
  39. // 5/13/93
  40. //
  41. //==========================================================================;
  42. #include <windows.h>
  43. #include <windowsx.h>
  44. #include <mmsystem.h>
  45. #include <commdlg.h>
  46. #include <stdarg.h>
  47. #include "appport.h"
  48. #include "mmcaps.h"
  49. #include "debug.h"
  50. //==========================================================================;
  51. //
  52. // Manufacturer and Product Id Conversion Hacks
  53. //
  54. //
  55. //==========================================================================;
  56. //--------------------------------------------------------------------------;
  57. //
  58. // BOOL MMCapsMidPid_MM_MICROSOFT
  59. //
  60. // Description:
  61. //
  62. //
  63. // Arguments:
  64. // PTSTR pszMid:
  65. //
  66. // UINT uPid:
  67. //
  68. // PTSTR pszPid:
  69. //
  70. // Return (BOOL):
  71. //
  72. // History:
  73. // 05/13/93
  74. //
  75. //--------------------------------------------------------------------------;
  76. BOOL FNLOCAL MMCapsMidPid_MM_MICROSOFT
  77. (
  78. PTSTR pszMid,
  79. UINT uPid,
  80. PTSTR pszPid
  81. )
  82. {
  83. static TCHAR szMid[] = TEXT("Microsoft Corporation");
  84. static PTSTR aszProductId[] =
  85. {
  86. NULL, // 0
  87. TEXT("MIDI Mapper"), // 1 MM_MIDI_MAPPER
  88. TEXT("Wave Mapper"), // 2 MM_WAVE_MAPPER
  89. TEXT("Sound Blaster MIDI output port"), // 3 MM_SNDBLST_MIDIOUT
  90. TEXT("Sound Blaster MIDI input port"), // 4 MM_SNDBLST_MIDIIN
  91. TEXT("Sound Blaster internal synthesizer"), // 5 MM_SNDBLST_SYNTH
  92. TEXT("Sound Blaster waveform output"), // 6 MM_SNDBLST_WAVEOUT
  93. TEXT("Sound Blaster waveform input"), // 7 MM_SNDBLST_WAVEIN
  94. NULL, // 8
  95. TEXT("Ad Lib-compatible synthesizer"), // 9 MM_ADLIB
  96. TEXT("MPU401-compatible MIDI output port"), // 10 MM_MPU401_MIDIOUT
  97. TEXT("MPU401-compatible MIDI input port"), // 11 MM_MPU401_MIDIIN
  98. TEXT("Joystick adapter"), // 12 MM_PC_JOYSTICK
  99. TEXT("PC Speaker waveform output"), // 13 MM_PCSPEAKER_WAVEOUT
  100. TEXT("MS Audio Board waveform input"), // 14 MM_MSFT_WSS_WAVEIN
  101. TEXT("MS Audio Board waveform output"), // 15 MM_MSFT_WSS_WAVEOUT
  102. TEXT("MS Audio Board Stereo FM synthesizer"), // 16 MM_MSFT_WSS_FMSYNTH_STEREO
  103. TEXT("MS Audio Board Mixer Driver"), // 17 MM_MSFT_WSS_MIXER
  104. TEXT("MS OEM Audio Board waveform input"), // 18 MM_MSFT_WSS_OEM_WAVEIN
  105. TEXT("MS OEM Audio Board waveform Output"), // 19 MM_MSFT_WSS_OEM_WAVEOUT
  106. TEXT("MS OEM Audio Board Stereo FM synthesizer"),// 20 MM_MSFT_WSS_OEM_FMSYNTH_STEREO
  107. TEXT("MS Audio Board Auxiliary Port"), // 21 MM_MSFT_WSS_AUX
  108. TEXT("MS OEM Audio Auxiliary Port"), // 22 MM_MSFT_WSS_OEM_AUX
  109. TEXT("MS vanilla driver waveform input"), // 23 MM_MSFT_GENERIC_WAVEIN
  110. TEXT("MS vanilla driver waveform output"), // 24 MM_MSFT_GENERIC_WAVEOUT
  111. TEXT("MS vanilla driver MIDI input"), // 25 MM_MSFT_GENERIC_MIDIIN
  112. TEXT("MS vanilla driver external MIDI output"), // 26 MM_MSFT_GENERIC_MIDIOUT
  113. TEXT("MS vanilla driver MIDI synthesizer"), // 27 MM_MSFT_GENERIC_MIDISYNTH
  114. TEXT("MS vanilla driver aux (line in)"), // 28 MM_MSFT_GENERIC_AUX_LINE
  115. TEXT("MS vanilla driver aux (mic)"), // 29 MM_MSFT_GENERIC_AUX_MIC
  116. TEXT("MS vanilla driver aux (CD)"), // 30 MM_MSFT_GENERIC_AUX_CD
  117. TEXT("MS OEM Audio Board Mixer Driver"), // 31 MM_MSFT_WSS_OEM_MIXER
  118. };
  119. #define PRODUCTID_MICROSOFT_LAST MM_MSFT_WSS_OEM_MIXER
  120. PTSTR psz;
  121. if (NULL != pszMid)
  122. lstrcpy(pszMid, szMid);
  123. if (NULL == pszPid)
  124. return (TRUE);
  125. //
  126. //
  127. //
  128. if ((uPid <= PRODUCTID_MICROSOFT_LAST) && (psz = aszProductId[uPid]))
  129. {
  130. lstrcat(pszPid, psz);
  131. return (TRUE);
  132. }
  133. pszPid[0] = '\0';
  134. return (FALSE);
  135. } // MMCapsMidPid_MM_MICROSOFT()
  136. //--------------------------------------------------------------------------;
  137. //
  138. // BOOL MMCapsMidPid_MM_CREATIVE
  139. //
  140. // Description:
  141. //
  142. //
  143. // Arguments:
  144. // PTSTR pszMid:
  145. //
  146. // UINT uPid:
  147. //
  148. // PTSTR pszPid:
  149. //
  150. // Return (BOOL):
  151. //
  152. // History:
  153. // 05/13/93
  154. //
  155. //--------------------------------------------------------------------------;
  156. BOOL FNLOCAL MMCapsMidPid_MM_CREATIVE
  157. (
  158. PTSTR pszMid,
  159. UINT uPid,
  160. PTSTR pszPid
  161. )
  162. {
  163. static TCHAR szMid[] = TEXT("Creative Labs Inc.");
  164. PTSTR psz;
  165. if (NULL != pszMid)
  166. lstrcpy(pszMid, szMid);
  167. if (NULL == pszPid)
  168. return (TRUE);
  169. //
  170. //
  171. //
  172. psz = NULL;
  173. switch (uPid)
  174. {
  175. case MM_CREATIVE_SB15_WAVEIN:
  176. psz = TEXT("SB (r) 1.5 waveform input");
  177. break;
  178. case MM_CREATIVE_SB20_WAVEIN:
  179. psz = TEXT("SB (r) 2.0 waveform input");
  180. break;
  181. case MM_CREATIVE_SBPRO_WAVEIN:
  182. psz = TEXT("SB Pro (r) waveform input");
  183. break;
  184. case MM_CREATIVE_SBP16_WAVEIN:
  185. psz = TEXT("SBP16 (r) waveform input");
  186. break;
  187. case MM_CREATIVE_SB15_WAVEOUT:
  188. psz = TEXT("SB (r) 1.5 waveform output");
  189. break;
  190. case MM_CREATIVE_SB20_WAVEOUT:
  191. psz = TEXT("SB (r) 2.0 waveform output");
  192. break;
  193. case MM_CREATIVE_SBPRO_WAVEOUT:
  194. psz = TEXT("SB Pro (r) waveform output");
  195. break;
  196. case MM_CREATIVE_SBP16_WAVEOUT:
  197. psz = TEXT("SBP16 (r) waveform output");
  198. break;
  199. case MM_CREATIVE_MIDIOUT:
  200. psz = TEXT("SB (r) MIDI output port");
  201. break;
  202. case MM_CREATIVE_MIDIIN:
  203. psz = TEXT("SB (r) MIDI input port");
  204. break;
  205. case MM_CREATIVE_FMSYNTH_MONO:
  206. psz = TEXT("SB (r) FM synthesizer");
  207. break;
  208. case MM_CREATIVE_FMSYNTH_STEREO:
  209. psz = TEXT("SB Pro (r) stereo FM synthesizer");
  210. break;
  211. case MM_CREATIVE_AUX_CD:
  212. psz = TEXT("SB Pro (r) aux (CD)");
  213. break;
  214. case MM_CREATIVE_AUX_LINE:
  215. psz = TEXT("SB Pro (r) aux (line in)");
  216. break;
  217. case MM_CREATIVE_AUX_MIC:
  218. psz = TEXT("SB Pro (r) aux (mic)");
  219. break;
  220. }
  221. if (NULL != psz)
  222. {
  223. lstrcat(pszPid, psz);
  224. return (TRUE);
  225. }
  226. return (FALSE);
  227. } // MMCapsMidPid_MM_CREATIVE()
  228. //--------------------------------------------------------------------------;
  229. //
  230. // BOOL MMCapsMidPid_MM_MEDIAVISION
  231. //
  232. // Description:
  233. //
  234. //
  235. // Arguments:
  236. // PTSTR pszMid:
  237. //
  238. // UINT uPid:
  239. //
  240. // PTSTR pszPid:
  241. //
  242. // Return (BOOL):
  243. //
  244. // History:
  245. // 05/13/93
  246. //
  247. //--------------------------------------------------------------------------;
  248. BOOL FNLOCAL MMCapsMidPid_MM_MEDIAVISION
  249. (
  250. PTSTR pszMid,
  251. UINT uPid,
  252. PTSTR pszPid
  253. )
  254. {
  255. static TCHAR szMid[] = TEXT("Media Vision Inc.");
  256. PTSTR psz;
  257. if (NULL != pszMid)
  258. lstrcpy(pszMid, szMid);
  259. if (NULL == pszPid)
  260. return (TRUE);
  261. //
  262. //
  263. //
  264. //
  265. //
  266. //
  267. psz = NULL;
  268. switch (uPid)
  269. {
  270. case MM_PROAUD_MIDIOUT:
  271. psz = TEXT("MediaVision MIDI output port");
  272. break;
  273. case MM_PROAUD_MIDIIN:
  274. psz = TEXT("MediaVision MIDI input port");
  275. break;
  276. case MM_PROAUD_SYNTH:
  277. psz = TEXT("MediaVision synthesizer");
  278. break;
  279. case MM_PROAUD_WAVEOUT:
  280. psz = TEXT("MediaVision Waveform output");
  281. break;
  282. case MM_PROAUD_WAVEIN:
  283. psz = TEXT("MediaVision Waveform input");
  284. break;
  285. case MM_PROAUD_MIXER:
  286. psz = TEXT("MediaVision Mixer");
  287. break;
  288. case MM_PROAUD_AUX:
  289. psz = TEXT("MediaVision aux");
  290. break;
  291. case MM_MEDIAVISION_THUNDER:
  292. psz = TEXT("Thunderboard Sound Card");
  293. break;
  294. }
  295. if (NULL != psz)
  296. {
  297. lstrcat(pszPid, psz);
  298. return (TRUE);
  299. }
  300. return (FALSE);
  301. } // MMCapsMidPid_MM_MEDIAVISION()
  302. //--------------------------------------------------------------------------;
  303. //
  304. // BOOL MMCapsMidPid_MM_FUJITSU
  305. //
  306. // Description:
  307. //
  308. //
  309. // Arguments:
  310. // PTSTR pszMid:
  311. //
  312. // UINT uPid:
  313. //
  314. // PTSTR pszPid:
  315. //
  316. // Return (BOOL):
  317. //
  318. // History:
  319. // 05/13/93
  320. //
  321. //--------------------------------------------------------------------------;
  322. BOOL FNLOCAL MMCapsMidPid_MM_FUJITSU
  323. (
  324. PTSTR pszMid,
  325. UINT uPid,
  326. PTSTR pszPid
  327. )
  328. {
  329. static TCHAR szMid[] = TEXT("Fujitsu");
  330. if (NULL != pszMid)
  331. lstrcpy(pszMid, szMid);
  332. if (NULL == pszPid)
  333. return (TRUE);
  334. //
  335. //
  336. //
  337. return (FALSE);
  338. } // MMCapsMidPid_MM_FUJITSU()
  339. //--------------------------------------------------------------------------;
  340. //
  341. // BOOL MMCapsMidPid_MM_ARTISOFT
  342. //
  343. // Description:
  344. //
  345. //
  346. // Arguments:
  347. // PTSTR pszMid:
  348. //
  349. // UINT uPid:
  350. //
  351. // PTSTR pszPid:
  352. //
  353. // Return (BOOL):
  354. //
  355. // History:
  356. // 05/13/93
  357. //
  358. //--------------------------------------------------------------------------;
  359. BOOL FNLOCAL MMCapsMidPid_MM_ARTISOFT
  360. (
  361. PTSTR pszMid,
  362. UINT uPid,
  363. PTSTR pszPid
  364. )
  365. {
  366. static TCHAR szMid[] = TEXT("Artisoft Inc.");
  367. PTSTR psz;
  368. if (NULL != pszMid)
  369. lstrcpy(pszMid, szMid);
  370. if (NULL == pszPid)
  371. return (TRUE);
  372. //
  373. //
  374. //
  375. psz = NULL;
  376. switch (uPid)
  377. {
  378. case MM_ARTISOFT_SBWAVEIN:
  379. psz = TEXT("Artisoft Sounding Board waveform input");
  380. break;
  381. case MM_ARTISOFT_SBWAVEOUT:
  382. psz = TEXT("Artisoft Sounding Board waveform output");
  383. break;
  384. }
  385. if (NULL != psz)
  386. {
  387. lstrcat(pszPid, psz);
  388. return (TRUE);
  389. }
  390. return (FALSE);
  391. } // MMCapsMidPid_MM_ARTISOFT()
  392. //--------------------------------------------------------------------------;
  393. //
  394. // BOOL MMCapsMidPid_MM_TURTLE_BEACH
  395. //
  396. // Description:
  397. //
  398. //
  399. // Arguments:
  400. // PTSTR pszMid:
  401. //
  402. // UINT uPid:
  403. //
  404. // PTSTR pszPid:
  405. //
  406. // Return (BOOL):
  407. //
  408. // History:
  409. // 05/13/93
  410. //
  411. //--------------------------------------------------------------------------;
  412. BOOL FNLOCAL MMCapsMidPid_MM_TURTLE_BEACH
  413. (
  414. PTSTR pszMid,
  415. UINT uPid,
  416. PTSTR pszPid
  417. )
  418. {
  419. static TCHAR szMid[] = TEXT("Turtle Beach");
  420. if (NULL != pszMid)
  421. lstrcpy(pszMid, szMid);
  422. if (NULL == pszPid)
  423. return (TRUE);
  424. //
  425. //
  426. //
  427. return (FALSE);
  428. } // MMCapsMidPid_MM_TURTLE_BEACH()
  429. //--------------------------------------------------------------------------;
  430. //
  431. // BOOL MMCapsMidPid_MM_IBM
  432. //
  433. // Description:
  434. //
  435. //
  436. // Arguments:
  437. // PTSTR pszMid:
  438. //
  439. // UINT uPid:
  440. //
  441. // PTSTR pszPid:
  442. //
  443. // Return (BOOL):
  444. //
  445. // History:
  446. // 05/13/93
  447. //
  448. //--------------------------------------------------------------------------;
  449. BOOL FNLOCAL MMCapsMidPid_MM_IBM
  450. (
  451. PTSTR pszMid,
  452. UINT uPid,
  453. PTSTR pszPid
  454. )
  455. {
  456. static TCHAR szMid[] = TEXT("International Bussiness Machines Corp.");
  457. PTSTR psz;
  458. if (NULL != pszMid)
  459. lstrcpy(pszMid, szMid);
  460. if (NULL == pszPid)
  461. return (TRUE);
  462. //
  463. //
  464. //
  465. psz = NULL;
  466. switch (uPid)
  467. {
  468. case MM_MMOTION_WAVEAUX:
  469. psz = TEXT("IBM M-Motion Auxiliary Device");
  470. break;
  471. case MM_MMOTION_WAVEOUT:
  472. psz = TEXT("IBM M-Motion Waveform Output");
  473. break;
  474. case MM_MMOTION_WAVEIN:
  475. psz = TEXT("IBM M-Motion Waveform Input");
  476. break;
  477. }
  478. if (NULL != psz)
  479. {
  480. lstrcat(pszPid, psz);
  481. return (TRUE);
  482. }
  483. return (FALSE);
  484. } // MMCapsMidPid_MM_IBM()
  485. //--------------------------------------------------------------------------;
  486. //
  487. // BOOL MMCapsMidPid_MM_VOCALTEC
  488. //
  489. // Description:
  490. //
  491. //
  492. // Arguments:
  493. // PTSTR pszMid:
  494. //
  495. // UINT uPid:
  496. //
  497. // PTSTR pszPid:
  498. //
  499. // Return (BOOL):
  500. //
  501. // History:
  502. // 05/13/93
  503. //
  504. //--------------------------------------------------------------------------;
  505. BOOL FNLOCAL MMCapsMidPid_MM_VOCALTEC
  506. (
  507. PTSTR pszMid,
  508. UINT uPid,
  509. PTSTR pszPid
  510. )
  511. {
  512. static TCHAR szMid[] = TEXT("Vocaltec LTD.");
  513. PTSTR psz;
  514. if (NULL != pszMid)
  515. lstrcpy(pszMid, szMid);
  516. if (NULL == pszPid)
  517. return (TRUE);
  518. //
  519. //
  520. //
  521. psz = NULL;
  522. switch (uPid)
  523. {
  524. case MM_VOCALTEC_WAVEOUT:
  525. psz = TEXT("Vocaltec Waveform output port");
  526. break;
  527. case MM_VOCALTEC_WAVEIN:
  528. psz = TEXT("Waveform input port");
  529. break;
  530. }
  531. if (NULL != psz)
  532. {
  533. lstrcat(pszPid, psz);
  534. return (TRUE);
  535. }
  536. return (FALSE);
  537. } // MMCapsMidPid_MM_VOCALTEC()
  538. //--------------------------------------------------------------------------;
  539. //
  540. // BOOL MMCapsMidPid_MM_ROLAND
  541. //
  542. // Description:
  543. //
  544. //
  545. // Arguments:
  546. // PTSTR pszMid:
  547. //
  548. // UINT uPid:
  549. //
  550. // PTSTR pszPid:
  551. //
  552. // Return (BOOL):
  553. //
  554. // History:
  555. // 05/13/93
  556. //
  557. //--------------------------------------------------------------------------;
  558. BOOL FNLOCAL MMCapsMidPid_MM_ROLAND
  559. (
  560. PTSTR pszMid,
  561. UINT uPid,
  562. PTSTR pszPid
  563. )
  564. {
  565. static TCHAR szMid[] = TEXT("Roland");
  566. PTSTR psz;
  567. if (NULL != pszMid)
  568. lstrcpy(pszMid, szMid);
  569. if (NULL == pszPid)
  570. return (TRUE);
  571. //
  572. //
  573. //
  574. psz = NULL;
  575. switch (uPid)
  576. {
  577. case MM_ROLAND_MPU401_MIDIOUT:
  578. psz = TEXT("MM_ROLAND_MPU401_MIDIOUT");
  579. break;
  580. case MM_ROLAND_MPU401_MIDIIN:
  581. psz = TEXT("MM_ROLAND_MPU401_MIDIIN");
  582. break;
  583. case MM_ROLAND_SMPU_MIDIOUTA:
  584. psz = TEXT("MM_ROLAND_SMPU_MIDIOUTA");
  585. break;
  586. case MM_ROLAND_SMPU_MIDIOUTB:
  587. psz = TEXT("MM_ROLAND_SMPU_MIDIOUTB");
  588. break;
  589. case MM_ROLAND_SMPU_MIDIINA:
  590. psz = TEXT("MM_ROLAND_SMPU_MIDIINA");
  591. break;
  592. case MM_ROLAND_SMPU_MIDIINB:
  593. psz = TEXT("MM_ROLAND_SMPU_MIDIINB");
  594. break;
  595. case MM_ROLAND_SC7_MIDIOUT:
  596. psz = TEXT("MM_ROLAND_SC7_MIDIOUT");
  597. break;
  598. case MM_ROLAND_SC7_MIDIIN:
  599. psz = TEXT("MM_ROLAND_SC7_MIDIIN");
  600. break;
  601. }
  602. if (NULL != psz)
  603. {
  604. lstrcat(pszPid, psz);
  605. return (TRUE);
  606. }
  607. return (FALSE);
  608. } // MMCapsMidPid_MM_ROLAND()
  609. //--------------------------------------------------------------------------;
  610. //
  611. // BOOL MMCapsMidPid_MM_DIGISPEECH
  612. //
  613. // Description:
  614. //
  615. //
  616. // Arguments:
  617. // PTSTR pszMid:
  618. //
  619. // UINT uPid:
  620. //
  621. // PTSTR pszPid:
  622. //
  623. // Return (BOOL):
  624. //
  625. // History:
  626. // 05/13/93
  627. //
  628. //--------------------------------------------------------------------------;
  629. BOOL FNLOCAL MMCapsMidPid_MM_DIGISPEECH
  630. (
  631. PTSTR pszMid,
  632. UINT uPid,
  633. PTSTR pszPid
  634. )
  635. {
  636. static TCHAR szMid[] = TEXT("Digispeech, Inc.");
  637. PTSTR psz;
  638. if (NULL != pszMid)
  639. lstrcpy(pszMid, szMid);
  640. if (NULL == pszPid)
  641. return (TRUE);
  642. //
  643. //
  644. //
  645. psz = NULL;
  646. switch (uPid)
  647. {
  648. //case MM_DIGISP_WAVEOUT:
  649. case MM_DSP_SOLUTIONS_WAVEOUT:
  650. psz = TEXT("Digispeech Waveform output port");
  651. break;
  652. //case MM_DIGISP_WAVEIN:
  653. case MM_DSP_SOLUTIONS_WAVEIN:
  654. psz = TEXT("Digispeech Waveform input port");
  655. break;
  656. case MM_DSP_SOLUTIONS_SYNTH:
  657. case MM_DSP_SOLUTIONS_AUX:
  658. break;
  659. #define MM_DSP_SOLUTIONS_WAVEOUT 1
  660. #define MM_DSP_SOLUTIONS_WAVEIN 2
  661. #define MM_DSP_SOLUTIONS_SYNTH 3
  662. #define MM_DSP_SOLUTIONS_AUX 4
  663. }
  664. if (NULL != psz)
  665. {
  666. lstrcat(pszPid, psz);
  667. return (TRUE);
  668. }
  669. return (FALSE);
  670. } // MMCapsMidPid_MM_DIGISPEECH()
  671. //--------------------------------------------------------------------------;
  672. //
  673. // BOOL MMCapsMidPid_MM_NEC
  674. //
  675. // Description:
  676. //
  677. //
  678. // Arguments:
  679. // PTSTR pszMid:
  680. //
  681. // UINT uPid:
  682. //
  683. // PTSTR pszPid:
  684. //
  685. // Return (BOOL):
  686. //
  687. // History:
  688. // 05/13/93
  689. //
  690. //--------------------------------------------------------------------------;
  691. BOOL FNLOCAL MMCapsMidPid_MM_NEC
  692. (
  693. PTSTR pszMid,
  694. UINT uPid,
  695. PTSTR pszPid
  696. )
  697. {
  698. static TCHAR szMid[] = TEXT("NEC");
  699. if (NULL != pszMid)
  700. lstrcpy(pszMid, szMid);
  701. if (NULL == pszPid)
  702. return (TRUE);
  703. //
  704. //
  705. //
  706. return (FALSE);
  707. } // MMCapsMidPid_MM_NEC()
  708. //--------------------------------------------------------------------------;
  709. //
  710. // BOOL MMCapsMidPid_MM_ATI
  711. //
  712. // Description:
  713. //
  714. //
  715. // Arguments:
  716. // PTSTR pszMid:
  717. //
  718. // UINT uPid:
  719. //
  720. // PTSTR pszPid:
  721. //
  722. // Return (BOOL):
  723. //
  724. // History:
  725. // 05/13/93
  726. //
  727. //--------------------------------------------------------------------------;
  728. BOOL FNLOCAL MMCapsMidPid_MM_ATI
  729. (
  730. PTSTR pszMid,
  731. UINT uPid,
  732. PTSTR pszPid
  733. )
  734. {
  735. static TCHAR szMid[] = TEXT("ATI");
  736. if (NULL != pszMid)
  737. lstrcpy(pszMid, szMid);
  738. if (NULL == pszPid)
  739. return (TRUE);
  740. //
  741. //
  742. //
  743. return (FALSE);
  744. } // MMCapsMidPid_MM_ATI()
  745. //--------------------------------------------------------------------------;
  746. //
  747. // BOOL MMCapsMidPid_MM_WANGLABS
  748. //
  749. // Description:
  750. //
  751. //
  752. // Arguments:
  753. // PTSTR pszMid:
  754. //
  755. // UINT uPid:
  756. //
  757. // PTSTR pszPid:
  758. //
  759. // Return (BOOL):
  760. //
  761. // History:
  762. // 05/13/93
  763. //
  764. //--------------------------------------------------------------------------;
  765. BOOL FNLOCAL MMCapsMidPid_MM_WANGLABS
  766. (
  767. PTSTR pszMid,
  768. UINT uPid,
  769. PTSTR pszPid
  770. )
  771. {
  772. static TCHAR szMid[] = TEXT("Wang Laboratories, Inc.");
  773. PTSTR psz;
  774. if (NULL != pszMid)
  775. lstrcpy(pszMid, szMid);
  776. if (NULL == pszPid)
  777. return (TRUE);
  778. //
  779. //
  780. //
  781. psz = NULL;
  782. switch (uPid)
  783. {
  784. case MM_WANGLABS_WAVEIN1:
  785. psz = TEXT("Wave input on Wang models: Exec 4010, 4030 and 3450; PC 251/25C, PC 461/25S and PC 461/33C");
  786. break;
  787. case MM_WANGLABS_WAVEOUT1:
  788. psz = TEXT("Wave output on Wang models: Exec 4010, 4030 and 3450; PC 251/25C, PC 461/25S and PC 461/33C");
  789. break;
  790. }
  791. if (NULL != psz)
  792. {
  793. lstrcat(pszPid, psz);
  794. return (TRUE);
  795. }
  796. return (FALSE);
  797. } // MMCapsMidPid_MM_WANGLABS()
  798. //--------------------------------------------------------------------------;
  799. //
  800. // BOOL MMCapsMidPid_MM_TANDY
  801. //
  802. // Description:
  803. //
  804. //
  805. // Arguments:
  806. // PTSTR pszMid:
  807. //
  808. // UINT uPid:
  809. //
  810. // PTSTR pszPid:
  811. //
  812. // Return (BOOL):
  813. //
  814. // History:
  815. // 05/13/93
  816. //
  817. //--------------------------------------------------------------------------;
  818. BOOL FNLOCAL MMCapsMidPid_MM_TANDY
  819. (
  820. PTSTR pszMid,
  821. UINT uPid,
  822. PTSTR pszPid
  823. )
  824. {
  825. static TCHAR szMid[] = TEXT("Tandy Corporation");
  826. if (NULL != pszMid)
  827. lstrcpy(pszMid, szMid);
  828. if (NULL == pszPid)
  829. return (TRUE);
  830. //
  831. //
  832. //
  833. return (FALSE);
  834. } // MMCapsMidPid_MM_TANDY()
  835. //--------------------------------------------------------------------------;
  836. //
  837. // BOOL MMCapsMidPid_MM_VOYETRA
  838. //
  839. // Description:
  840. //
  841. //
  842. // Arguments:
  843. // PTSTR pszMid:
  844. //
  845. // UINT uPid:
  846. //
  847. // PTSTR pszPid:
  848. //
  849. // Return (BOOL):
  850. //
  851. // History:
  852. // 05/13/93
  853. //
  854. //--------------------------------------------------------------------------;
  855. BOOL FNLOCAL MMCapsMidPid_MM_VOYETRA
  856. (
  857. PTSTR pszMid,
  858. UINT uPid,
  859. PTSTR pszPid
  860. )
  861. {
  862. static TCHAR szMid[] = TEXT("Voyetra");
  863. if (NULL != pszMid)
  864. lstrcpy(pszMid, szMid);
  865. if (NULL == pszPid)
  866. return (TRUE);
  867. //
  868. //
  869. //
  870. return (FALSE);
  871. } // MMCapsMidPid_MM_VOYETRA()
  872. //--------------------------------------------------------------------------;
  873. //
  874. // BOOL MMCapsMidPid_MM_ANTEX
  875. //
  876. // Description:
  877. //
  878. //
  879. // Arguments:
  880. // PTSTR pszMid:
  881. //
  882. // UINT uPid:
  883. //
  884. // PTSTR pszPid:
  885. //
  886. // Return (BOOL):
  887. //
  888. // History:
  889. // 05/13/93
  890. //
  891. //--------------------------------------------------------------------------;
  892. BOOL FNLOCAL MMCapsMidPid_MM_ANTEX
  893. (
  894. PTSTR pszMid,
  895. UINT uPid,
  896. PTSTR pszPid
  897. )
  898. {
  899. static TCHAR szMid[] = TEXT("Antex");
  900. if (NULL != pszMid)
  901. lstrcpy(pszMid, szMid);
  902. if (NULL == pszPid)
  903. return (TRUE);
  904. //
  905. //
  906. //
  907. return (FALSE);
  908. } // MMCapsMidPid_MM_ANTEX()
  909. //--------------------------------------------------------------------------;
  910. //
  911. // BOOL MMCapsMidPid_MM_ICL_PS
  912. //
  913. // Description:
  914. //
  915. //
  916. // Arguments:
  917. // PTSTR pszMid:
  918. //
  919. // UINT uPid:
  920. //
  921. // PTSTR pszPid:
  922. //
  923. // Return (BOOL):
  924. //
  925. // History:
  926. // 05/13/93
  927. //
  928. //--------------------------------------------------------------------------;
  929. BOOL FNLOCAL MMCapsMidPid_MM_ICL_PS
  930. (
  931. PTSTR pszMid,
  932. UINT uPid,
  933. PTSTR pszPid
  934. )
  935. {
  936. static TCHAR szMid[] = TEXT("ICL PS");
  937. if (NULL != pszMid)
  938. lstrcpy(pszMid, szMid);
  939. if (NULL == pszPid)
  940. return (TRUE);
  941. //
  942. //
  943. //
  944. return (FALSE);
  945. } // MMCapsMidPid_MM_ICL_PS()
  946. //--------------------------------------------------------------------------;
  947. //
  948. // BOOL MMCapsMidPid_MM_INTEL
  949. //
  950. // Description:
  951. //
  952. //
  953. // Arguments:
  954. // PTSTR pszMid:
  955. //
  956. // UINT uPid:
  957. //
  958. // PTSTR pszPid:
  959. //
  960. // Return (BOOL):
  961. //
  962. // History:
  963. // 05/13/93
  964. //
  965. //--------------------------------------------------------------------------;
  966. BOOL FNLOCAL MMCapsMidPid_MM_INTEL
  967. (
  968. PTSTR pszMid,
  969. UINT uPid,
  970. PTSTR pszPid
  971. )
  972. {
  973. static TCHAR szMid[] = TEXT("Intel");
  974. PTSTR psz;
  975. if (NULL != pszMid)
  976. lstrcpy(pszMid, szMid);
  977. if (NULL == pszPid)
  978. return (TRUE);
  979. //
  980. //
  981. //
  982. psz = NULL;
  983. switch (uPid)
  984. {
  985. case MM_INTELOPD_WAVEIN:
  986. psz = TEXT("HID2 WaveAudio Input driver");
  987. break;
  988. case MM_INTELOPD_WAVEOUT:
  989. psz = TEXT("HID2 WaveAudio Output driver");
  990. break;
  991. case MM_INTELOPD_AUX:
  992. psz = TEXT("HID2 Auxiliary driver (required for mixing functions)");
  993. break;
  994. }
  995. if (NULL != psz)
  996. {
  997. lstrcat(pszPid, psz);
  998. return (TRUE);
  999. }
  1000. return (FALSE);
  1001. } // MMCapsMidPid_MM_INTEL()
  1002. //--------------------------------------------------------------------------;
  1003. //
  1004. // BOOL MMCapsMidPid_MM_GRAVIS
  1005. //
  1006. // Description:
  1007. //
  1008. //
  1009. // Arguments:
  1010. // PTSTR pszMid:
  1011. //
  1012. // UINT uPid:
  1013. //
  1014. // PTSTR pszPid:
  1015. //
  1016. // Return (BOOL):
  1017. //
  1018. // History:
  1019. // 05/13/93
  1020. //
  1021. //--------------------------------------------------------------------------;
  1022. BOOL FNLOCAL MMCapsMidPid_MM_GRAVIS
  1023. (
  1024. PTSTR pszMid,
  1025. UINT uPid,
  1026. PTSTR pszPid
  1027. )
  1028. {
  1029. static TCHAR szMid[] = TEXT("Gravis");
  1030. if (NULL != pszMid)
  1031. lstrcpy(pszMid, szMid);
  1032. if (NULL == pszPid)
  1033. return (TRUE);
  1034. //
  1035. //
  1036. //
  1037. return (FALSE);
  1038. } // MMCapsMidPid_MM_GRAVIS()
  1039. //--------------------------------------------------------------------------;
  1040. //
  1041. // BOOL MMCapsMidPid_MM_VAL
  1042. //
  1043. // Description:
  1044. //
  1045. //
  1046. // Arguments:
  1047. // PTSTR pszMid:
  1048. //
  1049. // UINT uPid:
  1050. //
  1051. // PTSTR pszPid:
  1052. //
  1053. // Return (BOOL):
  1054. //
  1055. // History:
  1056. // 05/13/93
  1057. //
  1058. //--------------------------------------------------------------------------;
  1059. BOOL FNLOCAL MMCapsMidPid_MM_VAL
  1060. (
  1061. PTSTR pszMid,
  1062. UINT uPid,
  1063. PTSTR pszPid
  1064. )
  1065. {
  1066. static TCHAR szMid[] = TEXT("Video Associates Labs");
  1067. if (NULL != pszMid)
  1068. lstrcpy(pszMid, szMid);
  1069. if (NULL == pszPid)
  1070. return (TRUE);
  1071. //
  1072. //
  1073. //
  1074. return (FALSE);
  1075. } // MMCapsMidPid_MM_VAL()
  1076. //--------------------------------------------------------------------------;
  1077. //
  1078. // BOOL MMCapsMidPid_MM_INTERACTIVE
  1079. //
  1080. // Description:
  1081. //
  1082. //
  1083. // Arguments:
  1084. // PTSTR pszMid:
  1085. //
  1086. // UINT uPid:
  1087. //
  1088. // PTSTR pszPid:
  1089. //
  1090. // Return (BOOL):
  1091. //
  1092. // History:
  1093. // 05/13/93
  1094. //
  1095. //--------------------------------------------------------------------------;
  1096. BOOL FNLOCAL MMCapsMidPid_MM_INTERACTIVE
  1097. (
  1098. PTSTR pszMid,
  1099. UINT uPid,
  1100. PTSTR pszPid
  1101. )
  1102. {
  1103. static TCHAR szMid[] = TEXT("InterActive, Inc.");
  1104. PTSTR psz;
  1105. if (NULL != pszMid)
  1106. lstrcpy(pszMid, szMid);
  1107. if (NULL == pszPid)
  1108. return (TRUE);
  1109. //
  1110. //
  1111. //
  1112. psz = NULL;
  1113. switch (uPid)
  1114. {
  1115. case MM_INTERACTIVE_WAVEIN:
  1116. psz = TEXT("MM_INTERACTIVE_WAVEIN or WAVEOUT ??");
  1117. break;
  1118. #if 0
  1119. // mmreg.h has in and out defined as same value... how quaint.
  1120. case MM_INTERACTIVE_WAVEOUT:
  1121. psz = TEXT("MM_INTERACTIVE_WAVEOUT");
  1122. break;
  1123. #endif
  1124. }
  1125. if (NULL != psz)
  1126. {
  1127. lstrcat(pszPid, psz);
  1128. return (TRUE);
  1129. }
  1130. return (FALSE);
  1131. } // MMCapsMidPid_MM_INTERACTIVE()
  1132. //--------------------------------------------------------------------------;
  1133. //
  1134. // BOOL MMCapsMidPid_MM_YAMAHA
  1135. //
  1136. // Description:
  1137. //
  1138. //
  1139. // Arguments:
  1140. // PTSTR pszMid:
  1141. //
  1142. // UINT uPid:
  1143. //
  1144. // PTSTR pszPid:
  1145. //
  1146. // Return (BOOL):
  1147. //
  1148. // History:
  1149. // 05/13/93
  1150. //
  1151. //--------------------------------------------------------------------------;
  1152. BOOL FNLOCAL MMCapsMidPid_MM_YAMAHA
  1153. (
  1154. PTSTR pszMid,
  1155. UINT uPid,
  1156. PTSTR pszPid
  1157. )
  1158. {
  1159. static TCHAR szMid[] = TEXT("Yamaha Corp. of America");
  1160. PTSTR psz;
  1161. if (NULL != pszMid)
  1162. lstrcpy(pszMid, szMid);
  1163. if (NULL == pszPid)
  1164. return (TRUE);
  1165. //
  1166. //
  1167. //
  1168. psz = NULL;
  1169. switch (uPid)
  1170. {
  1171. case MM_YAMAHA_GSS_SYNTH:
  1172. psz = TEXT("Yamaha Gold Sound Standard FM sythesis driver");
  1173. break;
  1174. case MM_YAMAHA_GSS_WAVEOUT:
  1175. psz = TEXT("Yamaha Gold Sound Standard wave output driver");
  1176. break;
  1177. case MM_YAMAHA_GSS_WAVEIN:
  1178. psz = TEXT("Yamaha Gold Sound Standard wave input driver");
  1179. break;
  1180. case MM_YAMAHA_GSS_MIDIOUT:
  1181. psz = TEXT("Yamaha Gold Sound Standard midi output driver");
  1182. break;
  1183. case MM_YAMAHA_GSS_MIDIIN:
  1184. psz = TEXT("Yamaha Gold Sound Standard midi input driver");
  1185. break;
  1186. case MM_YAMAHA_GSS_AUX:
  1187. psz = TEXT("Yamaha Gold Sound Standard auxillary driver for mixer functions");
  1188. break;
  1189. }
  1190. if (NULL != psz)
  1191. {
  1192. lstrcat(pszPid, psz);
  1193. return (TRUE);
  1194. }
  1195. return (FALSE);
  1196. } // MMCapsMidPid_MM_YAMAHA()
  1197. //--------------------------------------------------------------------------;
  1198. //
  1199. // BOOL MMCapsMidPid_MM_EVEREX
  1200. //
  1201. // Description:
  1202. //
  1203. //
  1204. // Arguments:
  1205. // PTSTR pszMid:
  1206. //
  1207. // UINT uPid:
  1208. //
  1209. // PTSTR pszPid:
  1210. //
  1211. // Return (BOOL):
  1212. //
  1213. // History:
  1214. // 05/13/93
  1215. //
  1216. //--------------------------------------------------------------------------;
  1217. BOOL FNLOCAL MMCapsMidPid_MM_EVEREX
  1218. (
  1219. PTSTR pszMid,
  1220. UINT uPid,
  1221. PTSTR pszPid
  1222. )
  1223. {
  1224. static TCHAR szMid[] = TEXT("Everex Systems, Inc.");
  1225. PTSTR psz;
  1226. if (NULL != pszMid)
  1227. lstrcpy(pszMid, szMid);
  1228. if (NULL == pszPid)
  1229. return (TRUE);
  1230. //
  1231. //
  1232. //
  1233. psz = NULL;
  1234. switch (uPid)
  1235. {
  1236. case MM_EVEREX_CARRIER:
  1237. psz = TEXT("Everex Carrier SL/25 Notebook");
  1238. break;
  1239. }
  1240. if (NULL != psz)
  1241. {
  1242. lstrcat(pszPid, psz);
  1243. return (TRUE);
  1244. }
  1245. return (FALSE);
  1246. } // MMCapsMidPid_MM_EVEREX()
  1247. BOOL FNLOCAL MMCapsMidPid_MM_ECHO
  1248. (
  1249. PTSTR pszMid,
  1250. UINT uPid,
  1251. PTSTR pszPid
  1252. )
  1253. {
  1254. static TCHAR szMid[] = TEXT("Echo Speech Corporation");
  1255. PTSTR psz;
  1256. if (NULL != pszMid)
  1257. lstrcpy(pszMid, szMid);
  1258. if (NULL == pszPid)
  1259. return (TRUE);
  1260. //
  1261. //
  1262. //
  1263. psz = NULL;
  1264. switch (uPid)
  1265. {
  1266. case MM_ECHO_SYNTH:
  1267. psz = TEXT("Echo EuSythesis driver");
  1268. break;
  1269. case MM_ECHO_WAVEOUT:
  1270. psz = TEXT("Wave output driver");
  1271. break;
  1272. case MM_ECHO_WAVEIN:
  1273. psz = TEXT("Wave input driver");
  1274. break;
  1275. case MM_ECHO_MIDIOUT:
  1276. psz = TEXT("MIDI output driver");
  1277. break;
  1278. case MM_ECHO_MIDIIN:
  1279. psz = TEXT("MIDI input driver");
  1280. break;
  1281. case MM_ECHO_AUX:
  1282. psz = TEXT("auxillary driver for mixer functions");
  1283. break;
  1284. }
  1285. if (NULL != psz)
  1286. {
  1287. lstrcat(pszPid, psz);
  1288. return (TRUE);
  1289. }
  1290. return (FALSE);
  1291. }
  1292. //--------------------------------------------------------------------------;
  1293. //
  1294. // BOOL MMCapsMidPid_MM_SIERRA
  1295. //
  1296. // Description:
  1297. //
  1298. //
  1299. // Arguments:
  1300. // PTSTR pszMid:
  1301. //
  1302. // UINT uPid:
  1303. //
  1304. // PTSTR pszPid:
  1305. //
  1306. // Return (BOOL):
  1307. //
  1308. // History:
  1309. // 05/13/93
  1310. //
  1311. //--------------------------------------------------------------------------;
  1312. BOOL FNLOCAL MMCapsMidPid_MM_SIERRA
  1313. (
  1314. PTSTR pszMid,
  1315. UINT uPid,
  1316. PTSTR pszPid
  1317. )
  1318. {
  1319. static TCHAR szMid[] = TEXT("Sierra Semiconductor");
  1320. PTSTR psz;
  1321. if (NULL != pszMid)
  1322. lstrcpy(pszMid, szMid);
  1323. if (NULL == pszPid)
  1324. return (TRUE);
  1325. //
  1326. //
  1327. //
  1328. psz = NULL;
  1329. switch (uPid)
  1330. {
  1331. case MM_SIERRA_ARIA_MIDIOUT:
  1332. psz = TEXT("Sierra Aria MIDI output");
  1333. break;
  1334. case MM_SIERRA_ARIA_MIDIIN:
  1335. psz = TEXT("Sierra Aria MIDI input");
  1336. break;
  1337. case MM_SIERRA_ARIA_SYNTH:
  1338. psz = TEXT("Sierra Aria Synthesizer");
  1339. break;
  1340. case MM_SIERRA_ARIA_WAVEOUT:
  1341. psz = TEXT("Sierra Aria Waveform output");
  1342. break;
  1343. case MM_SIERRA_ARIA_WAVEIN:
  1344. psz = TEXT("Sierra Aria Waveform input");
  1345. break;
  1346. case MM_SIERRA_ARIA_AUX:
  1347. psz = TEXT("Sierra Aria Auxiliary device");
  1348. break;
  1349. }
  1350. if (NULL != psz)
  1351. {
  1352. lstrcat(pszPid, psz);
  1353. return (TRUE);
  1354. }
  1355. return (FALSE);
  1356. } // MMCapsMidPid_MM_SIERRA()
  1357. //--------------------------------------------------------------------------;
  1358. //
  1359. // BOOL MMCapsMidPid_MM_CAT
  1360. //
  1361. // Description:
  1362. //
  1363. //
  1364. // Arguments:
  1365. // PTSTR pszMid:
  1366. //
  1367. // UINT uPid:
  1368. //
  1369. // PTSTR pszPid:
  1370. //
  1371. // Return (BOOL):
  1372. //
  1373. // History:
  1374. // 05/13/93
  1375. //
  1376. //--------------------------------------------------------------------------;
  1377. BOOL FNLOCAL MMCapsMidPid_MM_CAT
  1378. (
  1379. PTSTR pszMid,
  1380. UINT uPid,
  1381. PTSTR pszPid
  1382. )
  1383. {
  1384. static TCHAR szMid[] = TEXT("Computer Aided Technologies");
  1385. if (NULL != pszMid)
  1386. lstrcpy(pszMid, szMid);
  1387. if (NULL == pszPid)
  1388. return (TRUE);
  1389. //
  1390. //
  1391. //
  1392. return (FALSE);
  1393. } // MMCapsMidPid_MM_CAT()
  1394. //--------------------------------------------------------------------------;
  1395. //
  1396. // BOOL MMCapsMidPid_MM_APPS
  1397. //
  1398. // Description:
  1399. //
  1400. //
  1401. // Arguments:
  1402. // PTSTR pszMid:
  1403. //
  1404. // UINT uPid:
  1405. //
  1406. // PTSTR pszPid:
  1407. //
  1408. // Return (BOOL):
  1409. //
  1410. // History:
  1411. // 05/13/93
  1412. //
  1413. //--------------------------------------------------------------------------;
  1414. BOOL FNLOCAL MMCapsMidPid_MM_APPS
  1415. (
  1416. PTSTR pszMid,
  1417. UINT uPid,
  1418. PTSTR pszPid
  1419. )
  1420. {
  1421. static TCHAR szMid[] = TEXT("APPS Software International");
  1422. if (NULL != pszMid)
  1423. lstrcpy(pszMid, szMid);
  1424. if (NULL == pszPid)
  1425. return (TRUE);
  1426. //
  1427. //
  1428. //
  1429. return (FALSE);
  1430. } // MMCapsMidPid_MM_APPS()
  1431. //--------------------------------------------------------------------------;
  1432. //
  1433. // BOOL MMCapsMidPid_MM_DSP_GROUP
  1434. //
  1435. // Description:
  1436. //
  1437. //
  1438. // Arguments:
  1439. // PTSTR pszMid:
  1440. //
  1441. // UINT uPid:
  1442. //
  1443. // PTSTR pszPid:
  1444. //
  1445. // Return (BOOL):
  1446. //
  1447. // History:
  1448. // 05/13/93
  1449. //
  1450. //--------------------------------------------------------------------------;
  1451. BOOL FNLOCAL MMCapsMidPid_MM_DSP_GROUP
  1452. (
  1453. PTSTR pszMid,
  1454. UINT uPid,
  1455. PTSTR pszPid
  1456. )
  1457. {
  1458. static TCHAR szMid[] = TEXT("DSP Group, Inc.");
  1459. PTSTR psz;
  1460. if (NULL != pszMid)
  1461. lstrcpy(pszMid, szMid);
  1462. if (NULL == pszPid)
  1463. return (TRUE);
  1464. //
  1465. //
  1466. //
  1467. psz = NULL;
  1468. switch (uPid)
  1469. {
  1470. case MM_DSP_GROUP_TRUESPEECH:
  1471. psz = TEXT("High quality 9.54:1 Speech Compression Vocoder");
  1472. break;
  1473. }
  1474. if (NULL != psz)
  1475. {
  1476. lstrcat(pszPid, psz);
  1477. return (TRUE);
  1478. }
  1479. return (FALSE);
  1480. } // MMCapsMidPid_MM_DSP_GROUP()
  1481. //--------------------------------------------------------------------------;
  1482. //
  1483. // BOOL MMCapsMidPid_MM_MELABS
  1484. //
  1485. // Description:
  1486. //
  1487. //
  1488. // Arguments:
  1489. // PTSTR pszMid:
  1490. //
  1491. // UINT uPid:
  1492. //
  1493. // PTSTR pszPid:
  1494. //
  1495. // Return (BOOL):
  1496. //
  1497. // History:
  1498. // 05/13/93
  1499. //
  1500. //--------------------------------------------------------------------------;
  1501. BOOL FNLOCAL MMCapsMidPid_MM_MELABS
  1502. (
  1503. PTSTR pszMid,
  1504. UINT uPid,
  1505. PTSTR pszPid
  1506. )
  1507. {
  1508. static TCHAR szMid[] = TEXT("microEngineering Labs");
  1509. PTSTR psz;
  1510. if (NULL != pszMid)
  1511. lstrcpy(pszMid, szMid);
  1512. if (NULL == pszPid)
  1513. return (TRUE);
  1514. //
  1515. //
  1516. //
  1517. psz = NULL;
  1518. switch (uPid)
  1519. {
  1520. case MM_MELABS_MIDI2GO:
  1521. psz = TEXT("parallel port MIDI interface");
  1522. break;
  1523. }
  1524. if (NULL != psz)
  1525. {
  1526. lstrcat(pszPid, psz);
  1527. return (TRUE);
  1528. }
  1529. return (FALSE);
  1530. } // MMCapsMidPid_MM_MELABS()
  1531. //--------------------------------------------------------------------------;
  1532. //
  1533. // BOOL MMCapsMidPid_MM_COMPUTER_FRIENDS
  1534. //
  1535. // Description:
  1536. //
  1537. //
  1538. // Arguments:
  1539. // PTSTR pszMid:
  1540. //
  1541. // UINT uPid:
  1542. //
  1543. // PTSTR pszPid:
  1544. //
  1545. // Return (BOOL):
  1546. //
  1547. // History:
  1548. // 05/13/93
  1549. //
  1550. //--------------------------------------------------------------------------;
  1551. BOOL FNLOCAL MMCapsMidPid_MM_COMPUTER_FRIENDS
  1552. (
  1553. PTSTR pszMid,
  1554. UINT uPid,
  1555. PTSTR pszPid
  1556. )
  1557. {
  1558. static TCHAR szMid[] = TEXT("Computer Friends, Inc");
  1559. if (NULL != pszMid)
  1560. lstrcpy(pszMid, szMid);
  1561. if (NULL == pszPid)
  1562. return (TRUE);
  1563. //
  1564. //
  1565. //
  1566. return (FALSE);
  1567. } // MMCapsMidPid_MM_COMPUTER_FRIENDS()
  1568. //--------------------------------------------------------------------------;
  1569. //
  1570. // BOOL MMCapsMidPid_MM_ESS
  1571. //
  1572. // Description:
  1573. //
  1574. //
  1575. // Arguments:
  1576. // PTSTR pszMid:
  1577. //
  1578. // UINT uPid:
  1579. //
  1580. // PTSTR pszPid:
  1581. //
  1582. // Return (BOOL):
  1583. //
  1584. // History:
  1585. // 05/13/93
  1586. //
  1587. //--------------------------------------------------------------------------;
  1588. BOOL FNLOCAL MMCapsMidPid_MM_ESS
  1589. (
  1590. PTSTR pszMid,
  1591. UINT uPid,
  1592. PTSTR pszPid
  1593. )
  1594. {
  1595. static TCHAR szMid[] = TEXT("ESS Technology");
  1596. PTSTR psz;
  1597. if (NULL != pszMid)
  1598. lstrcpy(pszMid, szMid);
  1599. if (NULL == pszPid)
  1600. return (TRUE);
  1601. //
  1602. //
  1603. //
  1604. psz = NULL;
  1605. switch (uPid)
  1606. {
  1607. case MM_ESS_AMWAVEOUT:
  1608. psz = TEXT("ESS Audio Magician Waveform Output Port");
  1609. break;
  1610. case MM_ESS_AMWAVEIN:
  1611. psz = TEXT("ESS Audio Magician Waveform Input Port");
  1612. break;
  1613. case MM_ESS_AMAUX:
  1614. psz = TEXT("ESS Audio Magician Auxiliary Port");
  1615. break;
  1616. case MM_ESS_AMSYNTH:
  1617. psz = TEXT("ESS Audio Magician Internal Music Synthesizer Port");
  1618. break;
  1619. case MM_ESS_AMMIDIOUT:
  1620. psz = TEXT("ESS Audio Magician MIDI Output Port");
  1621. break;
  1622. case MM_ESS_AMMIDIIN:
  1623. psz = TEXT("ESS Audio Magician MIDI Input Port");
  1624. break;
  1625. }
  1626. if (NULL != psz)
  1627. {
  1628. lstrcat(pszPid, psz);
  1629. return (TRUE);
  1630. }
  1631. return (FALSE);
  1632. } // MMCapsMidPid_MM_ESS()
  1633. //--------------------------------------------------------------------------;
  1634. //
  1635. // BOOL MMCapsMidPid_MM_AUDIOFILE
  1636. //
  1637. // Description:
  1638. //
  1639. //
  1640. // Arguments:
  1641. // PTSTR pszMid:
  1642. //
  1643. // UINT uPid:
  1644. //
  1645. // PTSTR pszPid:
  1646. //
  1647. // Return (BOOL):
  1648. //
  1649. // History:
  1650. // 05/13/93
  1651. //
  1652. //--------------------------------------------------------------------------;
  1653. BOOL FNLOCAL MMCapsMidPid_MM_AUDIOFILE
  1654. (
  1655. PTSTR pszMid,
  1656. UINT uPid,
  1657. PTSTR pszPid
  1658. )
  1659. {
  1660. static TCHAR szMid[] = TEXT("Audio, Inc.");
  1661. if (NULL != pszMid)
  1662. lstrcpy(pszMid, szMid);
  1663. if (NULL == pszPid)
  1664. return (TRUE);
  1665. //
  1666. //
  1667. //
  1668. return (FALSE);
  1669. } // MMCapsMidPid_MM_AUDIOFILE()
  1670. //--------------------------------------------------------------------------;
  1671. //
  1672. // BOOL MMCapsMidPid_MM_MOTOROLA
  1673. //
  1674. // Description:
  1675. //
  1676. //
  1677. // Arguments:
  1678. // PTSTR pszMid:
  1679. //
  1680. // UINT uPid:
  1681. //
  1682. // PTSTR pszPid:
  1683. //
  1684. // Return (BOOL):
  1685. //
  1686. // History:
  1687. // 05/13/93
  1688. //
  1689. //--------------------------------------------------------------------------;
  1690. BOOL FNLOCAL MMCapsMidPid_MM_MOTOROLA
  1691. (
  1692. PTSTR pszMid,
  1693. UINT uPid,
  1694. PTSTR pszPid
  1695. )
  1696. {
  1697. static TCHAR szMid[] = TEXT("Motorola, Inc.");
  1698. if (NULL != pszMid)
  1699. lstrcpy(pszMid, szMid);
  1700. if (NULL == pszPid)
  1701. return (TRUE);
  1702. //
  1703. //
  1704. //
  1705. return (FALSE);
  1706. } // MMCapsMidPid_MM_MOTOROLA()
  1707. //--------------------------------------------------------------------------;
  1708. //
  1709. // BOOL MMCapsMidPid_MM_CANOPUS
  1710. //
  1711. // Description:
  1712. //
  1713. //
  1714. // Arguments:
  1715. // PTSTR pszMid:
  1716. //
  1717. // UINT uPid:
  1718. //
  1719. // PTSTR pszPid:
  1720. //
  1721. // Return (BOOL):
  1722. //
  1723. //--------------------------------------------------------------------------;
  1724. BOOL FNLOCAL MMCapsMidPid_MM_CANOPUS
  1725. (
  1726. PTSTR pszMid,
  1727. UINT uPid,
  1728. PTSTR pszPid
  1729. )
  1730. {
  1731. static TCHAR szMid[] = TEXT("Canopus Co., Ltd.");
  1732. if (NULL != pszMid)
  1733. lstrcpy(pszMid, szMid);
  1734. if (NULL == pszPid)
  1735. return (TRUE);
  1736. //
  1737. //
  1738. //
  1739. return (FALSE);
  1740. } // MMCapsMidPid_MM_CANOPUS()
  1741. //==========================================================================;
  1742. //
  1743. //
  1744. //
  1745. //
  1746. //==========================================================================;
  1747. //--------------------------------------------------------------------------;
  1748. //
  1749. // BOOL MMCapsMidAndPid
  1750. //
  1751. // Description:
  1752. //
  1753. //
  1754. // Arguments:
  1755. // UINT uMid:
  1756. //
  1757. // PTSTR pszMid:
  1758. //
  1759. // UINT uPid:
  1760. //
  1761. // PTSTR pszPid:
  1762. //
  1763. // Return (BOOL):
  1764. //
  1765. // History:
  1766. // 05/13/93
  1767. //
  1768. //--------------------------------------------------------------------------;
  1769. BOOL FNGLOBAL MMCapsMidAndPid
  1770. (
  1771. UINT uMid,
  1772. PTSTR pszMid,
  1773. UINT uPid,
  1774. PTSTR pszPid
  1775. )
  1776. {
  1777. static TCHAR szUnknown[] = TEXT("Unknown");
  1778. static TCHAR szFormatId[] = TEXT("[%u], %s");
  1779. TCHAR achMid[MMCAPS_MAX_STRING_MID_CHARS];
  1780. TCHAR achPid[MMCAPS_MAX_STRING_PID_CHARS];
  1781. BOOL f;
  1782. switch (uMid)
  1783. {
  1784. case MM_MICROSOFT:
  1785. f = MMCapsMidPid_MM_MICROSOFT(achMid, uPid, achPid);
  1786. break;
  1787. case MM_CREATIVE:
  1788. f = MMCapsMidPid_MM_CREATIVE(achMid, uPid, achPid);
  1789. break;
  1790. case MM_MEDIAVISION:
  1791. f = MMCapsMidPid_MM_MEDIAVISION(achMid, uPid, achPid);
  1792. break;
  1793. case MM_FUJITSU:
  1794. f = MMCapsMidPid_MM_FUJITSU(achMid, uPid, achPid);
  1795. break;
  1796. case MM_ARTISOFT:
  1797. f = MMCapsMidPid_MM_ARTISOFT(achMid, uPid, achPid);
  1798. break;
  1799. case MM_TURTLE_BEACH:
  1800. f = MMCapsMidPid_MM_TURTLE_BEACH(achMid, uPid, achPid);
  1801. break;
  1802. case MM_IBM:
  1803. f = MMCapsMidPid_MM_IBM(achMid, uPid, achPid);
  1804. break;
  1805. case MM_VOCALTEC:
  1806. f = MMCapsMidPid_MM_VOCALTEC(achMid, uPid, achPid);
  1807. break;
  1808. case MM_ROLAND:
  1809. f = MMCapsMidPid_MM_ROLAND(achMid, uPid, achPid);
  1810. break;
  1811. //case MM_DIGISPEECH:
  1812. case MM_DSP_SOLUTIONS:
  1813. f = MMCapsMidPid_MM_DIGISPEECH(achMid, uPid, achPid);
  1814. break;
  1815. case MM_NEC:
  1816. f = MMCapsMidPid_MM_NEC(achMid, uPid, achPid);
  1817. break;
  1818. case MM_ATI:
  1819. f = MMCapsMidPid_MM_ATI(achMid, uPid, achPid);
  1820. break;
  1821. case MM_WANGLABS:
  1822. f = MMCapsMidPid_MM_WANGLABS(achMid, uPid, achPid);
  1823. break;
  1824. case MM_TANDY:
  1825. f = MMCapsMidPid_MM_TANDY(achMid, uPid, achPid);
  1826. break;
  1827. case MM_VOYETRA:
  1828. f = MMCapsMidPid_MM_VOYETRA(achMid, uPid, achPid);
  1829. break;
  1830. case MM_ANTEX:
  1831. f = MMCapsMidPid_MM_ANTEX(achMid, uPid, achPid);
  1832. break;
  1833. case MM_ICL_PS:
  1834. f = MMCapsMidPid_MM_ICL_PS(achMid, uPid, achPid);
  1835. break;
  1836. case MM_INTEL:
  1837. f = MMCapsMidPid_MM_INTEL(achMid, uPid, achPid);
  1838. break;
  1839. case MM_GRAVIS:
  1840. f = MMCapsMidPid_MM_GRAVIS(achMid, uPid, achPid);
  1841. break;
  1842. case MM_VAL:
  1843. f = MMCapsMidPid_MM_VAL(achMid, uPid, achPid);
  1844. break;
  1845. case MM_INTERACTIVE:
  1846. f = MMCapsMidPid_MM_INTERACTIVE(achMid, uPid, achPid);
  1847. break;
  1848. case MM_YAMAHA:
  1849. f = MMCapsMidPid_MM_YAMAHA(achMid, uPid, achPid);
  1850. break;
  1851. case MM_EVEREX:
  1852. f = MMCapsMidPid_MM_EVEREX(achMid, uPid, achPid);
  1853. break;
  1854. case MM_ECHO:
  1855. f = MMCapsMidPid_MM_ECHO(achMid, uPid, achPid);
  1856. break;
  1857. case MM_SIERRA:
  1858. f = MMCapsMidPid_MM_SIERRA(achMid, uPid, achPid);
  1859. break;
  1860. case MM_CAT:
  1861. f = MMCapsMidPid_MM_CAT(achMid, uPid, achPid);
  1862. break;
  1863. case MM_APPS:
  1864. f = MMCapsMidPid_MM_APPS(achMid, uPid, achPid);
  1865. break;
  1866. case MM_DSP_GROUP:
  1867. f = MMCapsMidPid_MM_DSP_GROUP(achMid, uPid, achPid);
  1868. break;
  1869. case MM_MELABS:
  1870. f = MMCapsMidPid_MM_MELABS(achMid, uPid, achPid);
  1871. break;
  1872. case MM_COMPUTER_FRIENDS:
  1873. f = MMCapsMidPid_MM_COMPUTER_FRIENDS(achMid, uPid, achPid);
  1874. break;
  1875. case MM_ESS:
  1876. f = MMCapsMidPid_MM_ESS(achMid, uPid, achPid);
  1877. break;
  1878. case MM_AUDIOFILE:
  1879. f = MMCapsMidPid_MM_AUDIOFILE(achMid, uPid, achPid);
  1880. break;
  1881. case MM_MOTOROLA:
  1882. f = MMCapsMidPid_MM_MOTOROLA(achMid, uPid, achPid);
  1883. break;
  1884. case MM_CANOPUS:
  1885. f = MMCapsMidPid_MM_CANOPUS(achMid, uPid, achPid);
  1886. break;
  1887. default:
  1888. lstrcpy(achMid, szUnknown);
  1889. break;
  1890. }
  1891. //
  1892. //
  1893. //
  1894. if (NULL != pszMid)
  1895. {
  1896. wsprintf(pszMid, szFormatId, uMid, (LPTSTR)achMid);
  1897. }
  1898. if (NULL != pszPid)
  1899. {
  1900. if (f)
  1901. wsprintf(pszPid, szFormatId, uPid, (LPTSTR)achPid);
  1902. else
  1903. wsprintf(pszPid, szFormatId, uPid, (LPTSTR)szUnknown);
  1904. }
  1905. //
  1906. //
  1907. //
  1908. return (f);
  1909. } // MMCapsMidAndPid()