Asio驅動開發學習筆記(1)

Asio驅動的最大特點是高速,它繞開了WDM框架,直接向硬件發送數據,最重要的是省略了KMixer步驟,這一步最費時間。此驅動開發很小衆,一般只有高端聲卡廠商纔會支持Asio驅動。
Asio驅動用戶層接口是COM接口,所以驅動開發人員也必須提供標準的COM接口。那麼,就無法繞開以下幾個函數:

 DllRegisterServer
 DllUnregisterServer
 DllCanUnloadNow
 DllGetClassObject

根據Asio的官方文檔,應用程序與Asio驅動交互如下圖:
這裏寫圖片描述
根據這張圖,我們可以看到對於驅動最重要的幾個函數:

Init();
CreateBuffers();
Start();
Stop();
DisposeBuffers();
Exit();

現在來看看Asio官方提供的驅動開發代碼(下載地址:http://download.csdn.net/detail/u013469110/9354551)。在Asio官方例程AsioSample中,有一個AsioSample類

Class AsioSample:public IASIO, public CUnknown

AsioSample繼承了IASIO接口,我們需要在AsioSample中完成IASIO接口,即完成

Init();  //初始化
CreateBuffers(); //爲每個聲道創建雙緩衝
Start(); //啓動輸入,輸出,實現向硬件發送/接收數據
Stop(); //關閉輸入,輸出
DisposeBuffers(); //釋放CreateBuffers創建的內存
Exit(); //退出

這些函數。當然,驅動的具體細節並不僅僅只是這些函數,只是這幾個最重要,需要重點關注。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章