Asio驱动的最大特点是高速,它绕开了WDM框架,直接向硬件发送数据,最重要的是省略了KMixer步骤,这一步最费时间。此驱动开发很小众,一般只有高端声卡厂商才会支持Asio驱动。
Asio驱动用户层接口是COM接口,所以驱动开发人员也必须提供标准的COM接口。那么,就无法绕开以下几个函数:

 DllRegisterServerDllUnregisterServerDllCanUnloadNowDllGetClassObject

根据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(); //退出

这些函数。当然,驱动的具体细节并不仅仅只是这些函数,只是这几个最重要,需要重点关注。

Asio驱动开发学习笔记(1)相关推荐

  1. Windows驱动开发学习笔记(七)—— 多核同步内核重载

    Windows驱动开发学习笔记(七)-- 多核同步 基础知识 并发与同步 分析 InterlockedIncrement 原子操作相关API 内核文件 多核同步 临界区 示例一:错误的临界区 示例二: ...

  2. Windows驱动开发学习笔记(六)—— Inline HOOK

    Windows驱动开发学习笔记(六)-- Inline HOOK SSDT HOOK Inline Hook 挂钩 执行流程 脱钩 实验一:3环 Inline Hook 实验二:0环 Inline H ...

  3. Windows驱动开发学习笔记(五)—— SSDT HOOK

    Windows驱动开发学习笔记(五)-- SSDT HOOK 系统服务表 系统服务描述符表 实验一:通过代码获取SSDT表地址 通过页表基址修改页属性 方法1:修改页属性 方法2:修改CR0寄存器 实 ...

  4. Windows驱动开发学习笔记(四)—— 3环与0环通信(常规方式)

    Windows驱动开发学习笔记(四)-- 3环与0环通信(常规方式) 设备对象 创建设备对象 设置数据交互方式 创建符号链接 IRP与派遣函数 IRP的类型 其它类型的IRP 派遣函数 派遣函数注册位 ...

  5. Windows驱动开发学习笔记(三)—— 内核空间内核模块

    Windows驱动开发学习笔记(三)-- 内核空间&内核模块 内核空间 实验 第一步:编译如下代码 第二步:将 .sys 文件拷贝到虚拟机中 第三步:部署 .sys 文件并运行 第四步:创建一 ...

  6. Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础

    Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...

  7. Windows驱动开发学习笔记(一)—— 环境配置第一个驱动程序

    Windows驱动开发学习笔记(一)-- 环境配置&第一个驱动程序 环境配置 第一个驱动程序 环境配置 安装VS2010:https://pan.baidu.com/s/1uZWWxCtB60 ...

  8. Android深度探索(卷1)HAL与驱动开发学习笔记(8)

    Android深度探索(卷1)HAL与驱动开发学习笔记(8) 第八章 蜂鸣器驱动   L i n u x驱动的代码重用有很多种方法.可以采用标准C程序的方式.将要重用的代码放在其他的文件(在头文件中声 ...

  9. Android底层HAL驱动开发学习笔记

    2017.3.27 1.确定任务:加快摄像头的信息获取速率:缩减驱动程序.减小帧的大小,缩减一个像素点的比特流(6/8/10bit) 2.重点了解函数:camerabuffer *buffer=mPr ...

  10. Linux驱动开发学习笔记【12】:Linux自带LED灯驱动

    目录 一.内核自带LED驱动使能 二.内核自带LED驱动分析 三.内核自带LED驱动使用 一.内核自带LED驱动使能 在Linux内核中,已经自带了LED灯的驱动程序,使用的就是platform平台驱 ...

最新文章

  1. 临平职高计算机专业高职考大学,临平职高高考再传捷报 本科连续四年蝉联杭州市第一...
  2. 部署自建CA颁发证书实现https加密
  3. java小程序:求完全数
  4. Matlab实现字符串分割
  5. 北京内推 | 微软亚洲研究院机器学习组招聘AI for Health实习生
  6. 直击阿里双11神秘技术:PB级大规模文件分发系统“蜻蜓”
  7. SAP CRM Product workflow debug
  8. C语言变量的类型和存储位置
  9. 神龙架构没那么难理解—图解世界领先的阿里云神龙架构(二)神龙出世
  10. 虚拟化顶级技术会议KVM Forum演讲分享 | 移动云KVM共享云盘技术实践
  11. c语言错误spawning,C语言一直出现Error spawning cl.exe的解决办法
  12. Atitit 编程语言知识点tech tree v2 attilax大总结
  13. Mac系统下编译并使用ijkplyer播放器
  14. 【UE4笔记】EventFunction事件和函数的区别
  15. python捕捉warning_Python warnings.warn方法代码示例
  16. 空战神作《浴血长空》折扣充值平台全方位多角度体验
  17. 物理-空间跳跃技术:空间跳跃技术
  18. nginx 配置 同一域名端口下,根据URL 导向不同的项目目录
  19. 2021年西式面点师(高级)免费试题及西式面点师(高级)模拟考试题库
  20. 蓝牙控制esp-32单片机(四)

热门文章

  1. 雨过天晴电脑保护系统 试用手记
  2. android6.0华为刷机包,华为畅享6官方rom刷机包_华为畅享6原版系统包_升级包
  3. 黑白表格样式教师求职简历免费word模板
  4. 测试笔记本续航的软件,性能测试及续航_笔记本评测-中关村在线
  5. 模块“dm.dll”已加载,但对 DllRegisterServer 的调用失败,错误代码为 0x80020009
  6. 基于Lumerical fdtd的超透镜设计(介质天线结构和金属谐振结构)
  7. IE浏览器右下角小广告怎么去除
  8. Tracert 工作原理
  9. 组合数学—什么是组合数学(1)
  10. 社工程序员(社会工程学)有关概述与讲解