Asio驱动开发学习笔记(1)
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)相关推荐
- Windows驱动开发学习笔记(七)—— 多核同步内核重载
Windows驱动开发学习笔记(七)-- 多核同步 基础知识 并发与同步 分析 InterlockedIncrement 原子操作相关API 内核文件 多核同步 临界区 示例一:错误的临界区 示例二: ...
- Windows驱动开发学习笔记(六)—— Inline HOOK
Windows驱动开发学习笔记(六)-- Inline HOOK SSDT HOOK Inline Hook 挂钩 执行流程 脱钩 实验一:3环 Inline Hook 实验二:0环 Inline H ...
- Windows驱动开发学习笔记(五)—— SSDT HOOK
Windows驱动开发学习笔记(五)-- SSDT HOOK 系统服务表 系统服务描述符表 实验一:通过代码获取SSDT表地址 通过页表基址修改页属性 方法1:修改页属性 方法2:修改CR0寄存器 实 ...
- Windows驱动开发学习笔记(四)—— 3环与0环通信(常规方式)
Windows驱动开发学习笔记(四)-- 3环与0环通信(常规方式) 设备对象 创建设备对象 设置数据交互方式 创建符号链接 IRP与派遣函数 IRP的类型 其它类型的IRP 派遣函数 派遣函数注册位 ...
- Windows驱动开发学习笔记(三)—— 内核空间内核模块
Windows驱动开发学习笔记(三)-- 内核空间&内核模块 内核空间 实验 第一步:编译如下代码 第二步:将 .sys 文件拷贝到虚拟机中 第三步:部署 .sys 文件并运行 第四步:创建一 ...
- Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础
Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...
- Windows驱动开发学习笔记(一)—— 环境配置第一个驱动程序
Windows驱动开发学习笔记(一)-- 环境配置&第一个驱动程序 环境配置 第一个驱动程序 环境配置 安装VS2010:https://pan.baidu.com/s/1uZWWxCtB60 ...
- Android深度探索(卷1)HAL与驱动开发学习笔记(8)
Android深度探索(卷1)HAL与驱动开发学习笔记(8) 第八章 蜂鸣器驱动 L i n u x驱动的代码重用有很多种方法.可以采用标准C程序的方式.将要重用的代码放在其他的文件(在头文件中声 ...
- Android底层HAL驱动开发学习笔记
2017.3.27 1.确定任务:加快摄像头的信息获取速率:缩减驱动程序.减小帧的大小,缩减一个像素点的比特流(6/8/10bit) 2.重点了解函数:camerabuffer *buffer=mPr ...
- Linux驱动开发学习笔记【12】:Linux自带LED灯驱动
目录 一.内核自带LED驱动使能 二.内核自带LED驱动分析 三.内核自带LED驱动使用 一.内核自带LED驱动使能 在Linux内核中,已经自带了LED灯的驱动程序,使用的就是platform平台驱 ...
最新文章
- 临平职高计算机专业高职考大学,临平职高高考再传捷报 本科连续四年蝉联杭州市第一...
- 部署自建CA颁发证书实现https加密
- java小程序:求完全数
- Matlab实现字符串分割
- 北京内推 | 微软亚洲研究院机器学习组招聘AI for Health实习生
- 直击阿里双11神秘技术:PB级大规模文件分发系统“蜻蜓”
- SAP CRM Product workflow debug
- C语言变量的类型和存储位置
- 神龙架构没那么难理解—图解世界领先的阿里云神龙架构(二)神龙出世
- 虚拟化顶级技术会议KVM Forum演讲分享 | 移动云KVM共享云盘技术实践
- c语言错误spawning,C语言一直出现Error spawning cl.exe的解决办法
- Atitit 编程语言知识点tech tree v2 attilax大总结
- Mac系统下编译并使用ijkplyer播放器
- 【UE4笔记】EventFunction事件和函数的区别
- python捕捉warning_Python warnings.warn方法代码示例
- 空战神作《浴血长空》折扣充值平台全方位多角度体验
- 物理-空间跳跃技术:空间跳跃技术
- nginx 配置 同一域名端口下,根据URL 导向不同的项目目录
- 2021年西式面点师(高级)免费试题及西式面点师(高级)模拟考试题库
- 蓝牙控制esp-32单片机(四)
热门文章
- 雨过天晴电脑保护系统 试用手记
- android6.0华为刷机包,华为畅享6官方rom刷机包_华为畅享6原版系统包_升级包
- 黑白表格样式教师求职简历免费word模板
- 测试笔记本续航的软件,性能测试及续航_笔记本评测-中关村在线
- 模块“dm.dll”已加载,但对 DllRegisterServer 的调用失败,错误代码为 0x80020009
- 基于Lumerical fdtd的超透镜设计(介质天线结构和金属谐振结构)
- IE浏览器右下角小广告怎么去除
- Tracert 工作原理
- 组合数学—什么是组合数学(1)
- 社工程序员(社会工程学)有关概述与讲解