|
高手帮忙!xxx_Init 初始化的结构体 到xxx_Open 怎么好多成员变了阿
[复制链接]
还请高手帮帮忙,郁闷死我了。。。
我的设备结构体如下,
- typedef struct
- {
- CHANEL chA; //A通道
- CHANEL chB; //B通道
- DWORD Xtal; //晶振频率
- HANDLE my_dev_event; //设备事件,与系统中断相关联
- DWORD sys_Int; //系统中断
- DWORD IRQ; //硬件中断
- ...
- }MYDEV, * PMYDEV;
- 其中CHANEL定义为
- typedef struct
- {
- DWORD baud; //通道波特率
- HANDLE event_tx; //通道发送事件
- HANDLE event_rx; //通道接收事件
- ....
- }CHANEL, *PCHANEL;
- 在MYD_Init里:
- HANDLE MYD_Init(ULONG Identifier)
- {
- PMYDEV pMyDev_Head;
- pMyDev_Head = (PMYDEV)LocalAlloc(LPTR, sizeof(PAM8530_DUSART)); //分配设备结构体空间
- //初始化各个成员
- pMyDev_Head->IRQ = 5;
- pMyDev_Head->sys_Int = 21;
- pMyDev_Head->Xtal =14000000; //晶振14MHz
- pMyDev_Head->chA.baud = 9600; //通道A波特率9600
- pMyDev_Head->chB.buad = 9600; //通道B波特率9600
- //创建事件句柄
- pMyDev_Head->my_dev_event = CreateEvent(0,FALSE,FALSE,NULL); //设备事件,与sys_Int关联
- pMyDev_Head->chA.event_tx = CreateEvent(0,FALSE,FALSE,NULL);
- pMyDev_Head->chA.event_rx = CreateEvent(0,FALSE,FALSE,NULL);
- pMyDev_Head->chB.event_tx = CreateEvent(0,FALSE,FALSE,NULL);
- pMyDev_Head->chB.event_rx = CreateEvent(0,FALSE,FALSE,NULL); //--------------->>(1)
- ....
- return pMyDev_Head; //--------------->>(2)
- }
- 在MYD_Open里:
- HANDLE MYD_Open(HANDLE pHead, DWORD AccessCode, DWORD ShareMode)
- {
- PMYDEV pMyDev_Head;
- pMyDev_Head = (PMYDEV)pHead;//------------------------------------------------>>(3)
- ....
- }
复制代码
我在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,
眼看着一片内存华以下子全红了,郁闷。。。。
救救我吧!!!
|
|