阅读:1327回复:5
请教 :d12 固件程序中的一个问题!!!
各位高手!!!
typedef struct _control_xfer { DEVICE_REQUEST DeviceRequest; unsigned short wLength; unsigned short wCount; unsigned char * pData; unsigned char dataBuffer[MAX_CONTROLDATA_SIZE]; } CONTROL_XFER; 这个结构体中的 各个成员是什么意思阿 (第一个知道)在程序中起什么作用阿? |
|
最新喜欢:![]() |
沙发#
发布于:2003-02-13 17:25
顶
help |
|
板凳#
发布于:2003-02-13 20:15
关注!
|
|
地板#
发布于:2003-02-13 22:00
我现在还没有遇到这个问题,所以就没有深究,不过我也认真想过这个问题,我觉得也就是对传输数据计数用的
我认为: wLength是某次控制传输要传输的总数据量 wCount这次控制传输已经传输的数据量 pData是要传输数据的存放地址的地址指针 看下面这个例子: void Chap9_BurstTransmitEP0(PUCHAR pData, USHORT len) { RaiseIRQL(); if(!ControlData.Abort) { if(ControlData.wLength > len) //要传输的数据总量的大小放入.wlength ControlData.wLength = len; //要传输的数据的地址指针给ControlData.Addr.pData ControlData.Addr.pData = pData; //如果一次不能把所有的数据都传完 if( ControlData.wLength >= EP0_PACKET_SIZE) { //先传输端点0所能承载的最大数据量,然后将ControlData.wCount 增加相应的数量 ControlData.wCount += ISP1581_WriteControlEndpoint(pData, EP0_PACKET_SIZE); //将端点0的状态标志设为datain,以便进行下一次数据传输 bISP1581flags.bits.DCP_state = USBFSM4DCP_DATAIN; } //如果总数据量小于端点0的最大包大小,那就一次传完。 else { ControlData.wCount += ISP1581_WriteControlEndpoint(pData, ControlData.wLength); bISP1581flags.bits.DCP_state = USBFSM4DCP_CONTROLREADHANDSHAKE; } } } 上面的东西不知正确与否,就算作为抛砖引玉吧,希望能有理解更深的同仁给出更多的意见和建议! |
|
地下室#
发布于:2003-02-14 00:48
typedef struct _control_xfer
{ DEVICE_REQUEST DeviceRequest; unsigned short wLength; unsigned short wCount; unsigned char * pData; unsigned char dataBuffer[MAX_CONTROLDATA_SIZE]; } CONTROL_XFER; wLength:发送代码长度 wCount:发送代码计数 pData:数据缓冲指针 |
|
5楼#
发布于:2003-02-14 11:11
楼上老兄的解释比我的简洁的多了呀,我还是表达不清
|
|