枚舉所有允許的驅(qū)動(dòng)程序_第1頁(yè)
枚舉所有允許的驅(qū)動(dòng)程序_第2頁(yè)
枚舉所有允許的驅(qū)動(dòng)程序_第3頁(yè)
枚舉所有允許的驅(qū)動(dòng)程序_第4頁(yè)
枚舉所有允許的驅(qū)動(dòng)程序_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、枚舉全部允許的驅(qū)動(dòng)程序 使用CODECs壓縮Wave音頻概要微軟的Win95和WinNT操作系統(tǒng)都包含有能夠壓縮解壓縮Wave音頻流的CODECs。將你的wave 音頻以壓縮形式保存不但能夠削減對(duì)存儲(chǔ)空間的需求,在網(wǎng)絡(luò)上傳送時(shí)也能削減數(shù)據(jù)傳輸 的時(shí)間。對(duì)ACM有了簡(jiǎn)潔了解后,現(xiàn)在可以要求它枚舉出系統(tǒng)中當(dāng)前全部的驅(qū)動(dòng)程序。我們?cè)诔绦蛑兴?調(diào)用的枚舉函數(shù)使用回調(diào)函數(shù)來(lái)匯報(bào)每個(gè)設(shè)備的數(shù)據(jù),這在Windows編程是一種很普遍的方法。 下面的調(diào)用就是枚舉當(dāng)前ACM所管理的全部設(shè)備:/ 枚舉全部允許的驅(qū)動(dòng)程序 printf(“Enabled drivers: “);mmr = acmDriverEnum(

2、DriverEnumProc, 0, 0);if (mmr) show_error(mmr);猶如其它多媒體函數(shù),很多ACM函數(shù)調(diào)用返回一MMRESULT值,指出了可能發(fā)生的錯(cuò)誤。此值為0 表示函數(shù)成功執(zhí)行。現(xiàn)在,讓我們看看枚舉回調(diào)函數(shù)DriverEnumProc,它由系統(tǒng)中的每一個(gè)驅(qū) 動(dòng)程序調(diào)用: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);/ 打開(kāi)驅(qū)動(dòng)程序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; / 連續(xù) 枚舉驅(qū)動(dòng)程序向回調(diào)函數(shù)傳遞了描述驅(qū)動(dòng)程序所支持類(lèi)型的一組標(biāo)志。一些驅(qū)動(dòng)程序可以異步 操作,而另一些驅(qū)動(dòng)程序則不能。一些驅(qū)動(dòng)程序能夠?qū)⒁环Nwave數(shù)據(jù)格式轉(zhuǎn)換成另一種格 式(稱(chēng)作CODECs),而另一些驅(qū)動(dòng)程序僅能完成過(guò)濾操作,其輸入輸出格式是一樣的。注 意ACM維護(hù)著這類(lèi)數(shù)據(jù)及驅(qū)動(dòng)程序的名字,版權(quán)信息等等,這樣我們可以不必裝載或打開(kāi) 指定的驅(qū)動(dòng)程序就可以得到這些數(shù)據(jù)。這樣很便利,譬如當(dāng)需將數(shù)據(jù)放在列表框中由用戶(hù) 選擇時(shí)。要獲得有關(guān)某一驅(qū)動(dòng)程序力量更多的具體信息,必需裝載驅(qū)動(dòng)程序并打開(kāi)它,可通過(guò)調(diào)用 acmOpenDriver實(shí)現(xiàn)。一旦驅(qū)動(dòng)程序打開(kāi),可懇求枚舉它所支持的wave數(shù)據(jù)格式。同時(shí)有一 個(gè)小問(wèn)題-盡管全部wave格式描述結(jié)構(gòu)基于WAVEFORAMTEX,很多格式使用此結(jié)構(gòu)的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論