我正在编写一个Mac应用程序,该应用程序使用IOKit向Personel Video Recorder发送消息并将消息接收到该应用程序。我需要发送消息来改变它的状态,它需要给我关于分辨率或录像等视频的信息。我意识到我必须找到正确的信息发送它,所以首先我想我可以先收到它的一些消息。我已经找到了设备的接口。我将如何能够转储收到的消息?找出来自IOUSBInterface管道的数据
下面是USB探头日志:
Composite device: "PVR"
Port Information: 0x001d
Captive
Internal Device
Connected
Enabled
Number Of Endpoints (includes EP0):
Total Endpoints for Configuration 1 (current): 7
Device Descriptor
Descriptor Version Number: 0x0200
Device Class: 0 (Composite)
Device Subclass: 0
Device Protocol: 0
Device MaxPacketSize: 64
Device VendorID/ProductID: 0x2040/0xE502 (Hauppauge Computer Works, Inc.)
Device Version Number: 0x0800
Number of Configurations: 1
Manufacturer String: 1 "Hauppauge"
Product String: 2 "WinTV"
Serial Number String: 3 "E502-00-00AA3DEE"
Configuration Descriptor (current config)
Length (and contents): 60
Raw Descriptor (hex) 0000: 09 02 3C 00 01 01 00 C0 00 09 04 00 00 06 FF FF
Raw Descriptor (hex) 0010: FF 00 07 05 81 02 00 02 00 07 05 84 02 00 02 00
Raw Descriptor (hex) 0020: 07 05 88 02 00 02 00 07 05 01 02 00 02 00 07 05
Raw Descriptor (hex) 0030: 02 02 00 02 00 07 05 86 02 00 02 00
Number of Interfaces: 1
Configuration Value: 1
Attributes: 0xC0 (self-powered)
MaxPower: 0 mA
Interface #0 - Vendor-specific
Alternate Setting 0
Number of Endpoints 6
Interface Class: 255 (Vendor-specific)
Interface Subclass; 255 (Vendor-specific)
Interface Protocol: 255
Endpoint 0x81 - Bulk Input
Address: 0x81 (IN)
Attributes: 0x02 (Bulk)
Max Packet Size: 512
Polling Interval: 0 (Endpoint never NAKs)
Endpoint 0x84 - Bulk Input
Address: 0x84 (IN)
Attributes: 0x02 (Bulk)
Max Packet Size: 512
Polling Interval: 0 (Endpoint never NAKs)
Endpoint 0x88 - Bulk Input
Address: 0x88 (IN)
Attributes: 0x02 (Bulk)
Max Packet Size: 512
Polling Interval: 0 (Endpoint never NAKs)
Endpoint 0x01 - Bulk Output
Address: 0x01 (OUT)
Attributes: 0x02 (Bulk)
Max Packet Size: 512
Polling Interval: 0 (Endpoint never NAKs)
Endpoint 0x02 - Bulk Output
Address: 0x02 (OUT)
Attributes: 0x02 (Bulk)
Max Packet Size: 512
Polling Interval: 0 (Endpoint never NAKs)
Endpoint 0x86 - Bulk Input
Address: 0x86 (IN)
Attributes: 0x02 (Bulk)
Max Packet Size: 512
Polling Interval: 0 (Endpoint never NAKs)
Device Qualifier Descriptor
Descriptor Version Number: 0x0200
Device Class 0 (Composite)
Device Subclass 0
Device Protocol 0
Device MaxPacketSize: 64
Number of Configurations: 1
bReserved: 0
Other Speed Configuration Descriptor
Length (and contents): 60
Raw Descriptor (hex) 0000: 09 07 3C 00 01 01 00 C0 00 09 04 00 00 06 FF FF
Raw Descriptor (hex) 0010: FF 00 07 05 81 02 40 00 00 07 05 84 02 40 00 00
Raw Descriptor (hex) 0020: 07 05 88 02 40 00 00 07 05 01 02 40 00 00 07 05
Raw Descriptor (hex) 0030: 02 02 40 00 00 07 05 86 02 40 00 00
Number of Interfaces: 1
Configuration Value: 1
Attributes: 0xC0 (self-powered)
MaxPower: 0 mA
Interface #0 - Vendor-specific
Alternate Setting 0
Number of Endpoints 6
Interface Class: 255 (Vendor-specific)
Interface Subclass; 255 (Vendor-specific)
Interface Protocol: 255
Endpoint 0x81 - Bulk Input
Address: 0x81 (IN)
Attributes: 0x02 (Bulk)
Max Packet Size: 64
Polling Interval: 0 ms
Endpoint 0x84 - Bulk Input
Address: 0x84 (IN)
Attributes: 0x02 (Bulk)
Max Packet Size: 64
Polling Interval: 0 ms
Endpoint 0x88 - Bulk Input
Address: 0x88 (IN)
Attributes: 0x02 (Bulk)
Max Packet Size: 64
Polling Interval: 0 ms
Endpoint 0x01 - Bulk Output
Address: 0x01 (OUT)
Attributes: 0x02 (Bulk)
Max Packet Size: 64
Polling Interval: 0 ms
Endpoint 0x02 - Bulk Output
Address: 0x02 (OUT)
Attributes: 0x02 (Bulk)
Max Packet Size: 64
Polling Interval: 0 ms
Endpoint 0x86 - Bulk Input
Address: 0x86 (IN)
Attributes: 0x02 (Bulk)
Max Packet Size: 64
Polling Interval: 0 ms
感谢您的输入!实际上,我曾尝试使用USB Prober,并且在记录USB活动时不会记录发送的数据。我有Parallels,虽然它在Windows 7上。这个PVR在Windows上有一个控制器应用程序。我可以使用什么应用程序在Windows上登录? – kezi 2013-03-11 19:32:24
我在Windows上使用过[Snoopy Pro](http://sourceforge.net/projects/usbsnoop/),但我发现大量数据被丢弃。也许你会有更多的运气。 usbtracer OSX应该显示你的某些类型的数据包的内容;您的虚拟化软件也可能具有记录所有转发的USB通信量的模式。否则,安装一个Linux发行版并在其上安装VirtualBox,然后通过USB并在Linux上启用USB调试。在Linux上这样做有很多文档。 – pmdj 2013-03-11 20:36:52
好吧,我已经使用USBAnalyzer来获取应用程序发送的数据。 (检查上面的图像)我会通过(* usbInterface) - > WritePipe(void * self,UInt8 pipeRef,void * buf,UInt32 size)在我的应用程序中发送相同的数据。当我打电话给我时,我将如何设置上面十六进制代码的数据?当分析仪说出来时,这意味着从电脑到设备,对不对? – kezi 2013-03-11 21:21:57