阅读:1297回复:2
关于isochronous的问题
我用的是isochronous传输方式
现在不太明白packet中的有效数据和discriptor的分布位置? // 。。。 ULONG packetsRead; PUSBD_ISO_PACKET_DESCRIPTOR isoDesc; PUINT buffer; bytesToRead = IsoControl.PacketCount * (IsoControl.PacketSize + sizeof(USBD_ISO_PACKET_DESCRIPTOR)); buffer = (PUINT) malloc(bytesToRead); bResult = DeviceIoControl (hDevice, IOCTL_EZUSB_READ_ISO_BUFFER, &IsoControl, sizeof(ISO_TRANSFER_CONTROL), buffer, bytesToRead, &nBytes, NULL); packetsRead = nBytes / (IsoControl.PacketSize + sizeof(USBD_ISO_PACKET_DESCRIPTOR)); //到这里还看得懂。 isoDesc = (PUSBD_ISO_PACKET_DESCRIPTOR)(buffer + (packetsRead * IsoControl.PacketSize)); //这里不明白了。 //discriptor是跟在整个数据流最后?还是一个packet跟一个discriptor? 高手指点一下?谢谢先。 |
|
沙发#
发布于:2003-03-24 21:40
从取出的数据分析是放在最后12byte/packet 我也是这么想的。 但是 isoDesc = (PUSBD_ISO_PACKET_DESCRIPTOR)(buffer + (packetsRead * IsoControl.PacketSize)); 这一句 isoDesc是指向哪个discriptor? 我理解中应该这样: isoDesc = (PUSBD_ISO_PACKET_DESCRIPTOR)(buffer +N*(IsoControl.PacketSize+sizeof(USBD_ISO_PACKET_DESCRIPTOR))+IsoControl.PacketSize); 这样isoDesc指向了第N个packet的discriptor。 是不是? |
|
板凳#
发布于:2003-03-24 20:56
从取出的数据分析是放在最后12byte/packet
|
|