天嵌 ARM开发社区

 找回密码
 注册
查看: 2782|回复: 1

求助:wince6.0:结构体中的指针,传递给xxx_IOControl的问题??

[复制链接]
hoofy 发表于 2011-1-16 10:43:05 | 显示全部楼层 |阅读模式
case IOCTL_I2C_WRITE:
            if ( (dwLenIn < sizeof(I2C_IO_DESC)) || !pBufIn || !((PI2C_IO_DESC)pBufIn)->Data) {
                dwErr = ERROR_INVALID_PARAMETER;
                bRc = FALSE;
                break;
            }
            
            puc = (PUCHAR)MapPtrToProcess(((PI2C_IO_DESC)pBufIn)->Data, pI2C->hProc );            {
               //中断中不能访问puc,故用临时变量ptemp
                DWORD size = ((PI2C_IO_DESC)pBufIn)->Count;
                LPVOID ptemp = NULL;
                if(size)
                {
                    ptemp = malloc(size);
                    memcpy(ptemp,puc,size);
                }
            
                dwErr = HW_Write(pI2C,
                                 ((PI2C_IO_DESC)pBufIn)->SlaveAddr,
                                 ((PI2C_IO_DESC)pBufIn)->WordAddr,
                                 ptemp,
                                 size);
                if(ptemp)
                {
                    free(ptemp);
                }
            }
            UnMapPtr(puc);
            if ( ERROR_SUCCESS == dwErr ) {
                if (pdwActualOut)
                    *pdwActualOut = ((PI2C_IO_DESC)pBufIn)->Count;
            } else
                bRc = FALSE;
            
            break;

上面代码是PB包wince6.0中的IIC驱动。其中的“puc = (PUCHAR)MapPtrToProcess(((PI2C_IO_DESC)pBufIn)->Data, pI2C->hProc );”这句代码中的函数MapPtrToProcess貌似在wince6.0中不被支持。那wince6.0中要实现结构体中指针的传递,该如何??
注:pBufIn是传递给xxx_IOControl()函数的的结构体指针。

谢谢!
用心飞翔 发表于 2011-3-30 11:51:36 | 显示全部楼层
memcpy(&目标结构体变量, pBufIn, 拷贝字节数);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-16 22:55 , Processed in 1.031250 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表