枚举所有允许的驱动程序_第1页
枚举所有允许的驱动程序_第2页
枚举所有允许的驱动程序_第3页
枚举所有允许的驱动程序_第4页
枚举所有允许的驱动程序_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、枚举全部允许的驱动程序 使用CODECs压缩Wave音频概要微软的Win95和WinNT操作系统都包含有能够压缩解压缩Wave音频流的CODECs。将你的wave 音频以压缩形式保存不但能够削减对存储空间的需求,在网络上传送时也能削减数据传输 的时间。对ACM有了简洁了解后,现在可以要求它枚举出系统中当前全部的驱动程序。我们在程序中所 调用的枚举函数使用回调函数来汇报每个设备的数据,这在Windows编程是一种很普遍的方法。 下面的调用就是枚举当前ACM所管理的全部设备:/ 枚举全部允许的驱动程序 printf(“Enabled drivers: “);mmr = acmDriverEnum(

2、DriverEnumProc, 0, 0);if (mmr) show_error(mmr);犹如其它多媒体函数,很多ACM函数调用返回一MMRESULT值,指出了可能发生的错误。此值为0 表示函数成功执行。现在,让我们看看枚举回调函数DriverEnumProc,它由系统中的每一个驱 动程序调用:BOOL CALLBACK DriverEnumProc(HACMDRIVERID hadid, DWORD dwInstance, DWORD fdwSupport) printf(“ id: %8.8lxH“, hadid);printf(“ supports: “);if (fdwSuppor

3、t & ACMDRIVERDETAILS_SUPPORTF_ASYNC) printf(“ async conversions “);if (fdwSupport & ACMDRIVERDETAILS_SUPPORTF_CODEC) printf(“ different format conversions “);if (fdwSupport & ACMDRIVERDETAILS_SUPPORTF_CONVERTER) printf(“ same format conversions “);if (fdwSupport & ACMDRIVERDETAILS_SU

4、PPORTF_FILTER) printf(“ filtering “);/ 获得一些具体信息ACMDRIVERDETAILS dd;dd.cbStruct = sizeof(dd);MMRESULT mmr = acmDriverDetails(hadid, &dd, 0);if (mmr) printf(“ “); show_error(mmr);else printf(“ Short name: %s “, dd.szShortName);printf(“ Long name: %s “, dd.szLongName);printf(“ Copyright: %s “, dd.s

5、zCopyright);printf(“ Licensing: %s “, dd.szLicensing);printf(“ Features: %s “, dd.szFeatures);printf(“ Supports %u formats “, dd.cFormatTags);printf(“ Supports %u filter formats “, dd.cFilterTags);/ 打开驱动程序HACMDRIVER had = NULL;mmr = acmDriverOpen(&had, hadid, 0);if (mmr) printf(“ “); show_error(

6、mmr);else DWORD dwSize = 0;mmr = acmMetrics(had, ACM_METRIC_MAX_SIZE_FORMAT, &dwSize);if (dwSize cbSize = LOWORD(dwSize) - sizeof(WAVEFORMATEX);pwf->wFormatTag = WAVE_FORMAT_UNKNOWN;ACMFORMATDETAILS fd;memset(&fd, 0, sizeof(fd);fd.cbStruct = sizeof(fd);fd.pwfx = pwf;fd.cbwfx = dwSize;

7、fd.dwFormatTag = WAVE_FORMAT_UNKNOWN;mmr = acmFormatEnum(had, &fd, FormatEnumProc, 0, 0); if (mmr) printf(“ “);show_error(mmr);free(pwf);acmDriverClose(had, 0);return TRUE; / 连续 枚举驱动程序向回调函数传递了描述驱动程序所支持类型的一组标志。一些驱动程序可以异步 操作,而另一些驱动程序则不能。一些驱动程序能够将一种wave数据格式转换成另一种格 式(称作CODECs),而另一些驱动程序仅能完成过滤操作,其输入输出格式是一样的。注 意ACM维护着这类数据及驱动程序的名字,版权信息等等,这样我们可以不必装载或打开 指定的驱动程序就可以得到这些数据。这样很便利,譬如当需将数据放在列表框中由用户 选择时。要获得有关某一驱动程序力量更多的具体信息,必需装载驱动程序并打开它,可通过调用 acmOpenDriver实现。一旦驱动程序打开,可恳求枚举它所支持的wave数据格式。同时有一 个小问题-尽管全部wave格式描述结构基于WAVEFORAMTEX,很多格式使用此结构的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论