3172|8

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

高手帮忙!xxx_Init 初始化的结构体 到xxx_Open 怎么好多成员变了阿 [复制链接]

还请高手帮帮忙,郁闷死我了。。。
我的设备结构体如下,

  1. typedef struct
  2. {
  3.     CHANEL chA;   //A通道
  4.     CHANEL chB;    //B通道
  5.     DWORD  Xtal;   //晶振频率
  6.     HANDLE my_dev_event;  //设备事件,与系统中断相关联
  7.     DWORD  sys_Int;  //系统中断
  8.     DWORD  IRQ;      //硬件中断
  9.     ...
  10. }MYDEV, * PMYDEV;
  11. 其中CHANEL定义为
  12. typedef struct
  13. {
  14.    DWORD  baud;      //通道波特率
  15.     HANDLE event_tx;  //通道发送事件
  16.     HANDLE event_rx;  //通道接收事件
  17.     ....
  18. }CHANEL, *PCHANEL;

  19. 在MYD_Init里:
  20. HANDLE MYD_Init(ULONG   Identifier)
  21. {
  22.     PMYDEV pMyDev_Head;

  23.     pMyDev_Head = (PMYDEV)LocalAlloc(LPTR, sizeof(PAM8530_DUSART)); //分配设备结构体空间
  24.     //初始化各个成员
  25.      pMyDev_Head->IRQ     = 5;
  26.     pMyDev_Head->sys_Int = 21;
  27.     pMyDev_Head->Xtal    =14000000; //晶振14MHz
  28.     pMyDev_Head->chA.baud = 9600;   //通道A波特率9600
  29.     pMyDev_Head->chB.buad = 9600;   //通道B波特率9600

  30.     //创建事件句柄
  31.      pMyDev_Head->my_dev_event = CreateEvent(0,FALSE,FALSE,NULL);  //设备事件,与sys_Int关联
  32.     pMyDev_Head->chA.event_tx = CreateEvent(0,FALSE,FALSE,NULL);
  33.     pMyDev_Head->chA.event_rx = CreateEvent(0,FALSE,FALSE,NULL);
  34.     pMyDev_Head->chB.event_tx = CreateEvent(0,FALSE,FALSE,NULL);
  35.     pMyDev_Head->chB.event_rx = CreateEvent(0,FALSE,FALSE,NULL); //--------------->>(1)
  36.     ....
  37.     return pMyDev_Head;                                               //--------------->>(2)
  38. }

  39. 在MYD_Open里:
  40. HANDLE MYD_Open(HANDLE  pHead, DWORD   AccessCode, DWORD ShareMode)
  41. {
  42.     PMYDEV pMyDev_Head;
  43.     pMyDev_Head = (PMYDEV)pHead;//------------------------------------------------>>(3)
  44.     ....
  45. }
复制代码


我在MYD_Init里设置了断点,(1)之前初始化都好好的,只要一执行(1),之前初始化好的chA, chB的成员都变了,
而pMyDev_Head的其他成员都没变,
我把(1)注释掉,有时可以顺利通过,返回pMyDev_Head。有时到(2)处还是变((2)还没执行);

但是应用程序CreateFile的时候,到(3)处设置断点,观察变量,pMyDev_Head仍然是chA,chB 的成员好多都变了,pMyDev_Head其他成员没变,如Xtal,IRQ,sys_Intr(当然是在(3)执行完成后)

观察内存,chA,chB处确实被修改了,乱七八糟的,

我真是一点头绪都没有,没有理由啊,我看着他汇编执行(1)那一条语句,还没Call CreateEvent之前,就一个push        0,
眼看着一片内存华以下子全红了,郁闷。。。。

救救我吧!!!

最新回复

谢谢!!  详情 回复 发表于 2009-5-17 13:17
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我用的是CE5.0,
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
被修改的地方还有\windows\ddi_agx.dl的字样,好像就是被其他什么修改了,可是我的内存申请了阿,怎么会乱用我申请过的内存呢
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
埃,我是猪头,
pMyDev_Head = (PMYDEV)LocalAlloc(LPTR, sizeof(MYDEV)); //分配设备结构体空间
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
PMYDEV pMyDev_Head;

    pMyDev_Head = (PMYDEV)LocalAlloc(LPTR, sizeof(PAM8530_DUSART)); //分配设备结构体空间

PAM8530_DUSART这个大小和PMYDEV的大小是一样的吗?也就是说这两个结构体是同一个吗?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
呵呵
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

7
 
有时候调试程序的时候就是会犯一些你自己觉得不会犯的低级错误,这样的错误可能会浪费你一天的时间。
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

8
 
郁闷了两天了,真郁闷,100分都给你了,呵呵
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 
谢谢!!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表