/*****************************************************
*作 者:温子祺
*联系方式 :wenziqi@hotmail.com
*说 明:WINCE 流驱动接口各函数之间的关系
*****************************************************/
以S3C2440的BSP包中的IIC驱动为例,IIC驱动主要包含drv.c,drv.h,I2C.c等文件。在drv.c我们好特别注意两个函数:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
PI2C_CONTEXT
I2C_Init(
PVOID Context
)
PI2C_CONTEXT
I2C_Open(
PI2C_CONTEXT pI2C, // context returned by I2C_Init.
DWORD AccessCode, // @parm access code
DWORD ShareMode // @parm share mode
)
代码分析:
(1)[I2C_Init函数]:在该函数当中,输入参数为Context,参数类型为PVOID,Context参数实质为注册表路径的HKLM\Drivers\Active\xx的值(01~),函数的返回值为PI2C_CONTEXT类型,特别注意该函数的返回值,如果该返回值是0或者是NULL,驱动不会加载成功的。当该返回值有效时,驱动就会加载成功,并且该返回值会被作为I2C_Open函数中的第一个参数,即PI2C_CONTEXT pI2C。
(1)[I2C_Open函数]:在该函数当中,要注意的是PI2C_CONTEXT pI2C参数,该参数是I2C_Init函数的有效的返回值。当I2C_Open函数返回值为0或者NULL时,上层软件使用CreateFile函数会失败。当该函数的返回值有效时,上层软件使用CreateFile函数会成功,并且该返回值作为其他流接口函数的参数,如I2C_Read、I2C_Write、I2C_IOControl等函数。
转载请注明出处,谢谢!