最近一段时间,工作需要编写调试一个USB转虚拟串口的Windows驱动程序。特意翻看了下N久之前的驱动程序关于IO端口操作的学习笔记,不知道是记性差了,还是有些知识生疏了,干脆重新记录整理下。
一 概述
1. TurboC中两组I/O操作函数:
input: _inp 8位 _inpw 16位 _inpd 32位
output: _outp _outpw _outpd
2. WINDOWS DDK中中无法直接使用上述函数,但可以_asm关键字加入汇编代码。
UCHAR In_8(PUCHAR Port)
{
UCHAR Value;
_asm
{
//将Port地址传入EDX
mov edx,Port
//读取端口
in al,edx
//将读取端口的数值传入Value中
mov Value,al
nop
nop
}
return(Value);
}
3.DDK中提供了类似的端口操作函数,要使用这些函数,需要在编译驱动脚本Sources文件里的TARGETLIBS字段加入HAL.lib依赖库。
READ_PORT_UCHAR
WRITE_PORT_UCHAR
二 使用工具软件WinIO。