镇江回收三菱FX3U-48MR/ES厂家电话
主机控制器通过Set_Address请求向设备分配一个唯一的地址。在完成这次传输之后,设备进入地址状态(Addressstate),之后就启用新地址继续与主机通信。这个地址对于设备来说是终生制的,设备在,地址在;设备消失(被拔出,复位,系统重启),地址被收回。同一个设备当再次被枚举后得到的地址不一定是上次那个了。主机发送Get_Descriptor请求到新地址读取设备描述符,这次主机发送Get_Descriptor请求可算是诚心,它会认真解析设备描述符的内容。设备描述符内信息包括端点0的大包长度,设备所支持的配置(Configuration)个数,设备类型,VID(VendorID,由USB-IF分配),PID(ProductID,由厂商自己定制)等信息。Get_Descriptor请求(Devicetype)和设备描述符(已抹去VID,PID等信息):
镇江回收三菱FX3U-48MR/ES厂家电话
对于复合设备,主机会在这个时候根据设备接口信息,给它们挂载驱动。控制传输是重要和复杂的一种传输类型,其中使用了一个8字节大小的DATA0数据包,这8个字节的数据包是主机用来发送控制阶段中的请求命令,而这些请求命令是主机配置USB设备的关键。1)bmRequestType(向谁请求)D7:传输方向0=主机至设备;1=设备至主机D6..5:命令类型D6D5=00:标准请求命令;D6D5=01:类请求命令;
镇江回收三菱FX3U-48MR/ES厂家电话
服务至上:我们对客户资料信息以及服务内容严修保密,多项合作案例,以品质服务赢得了广大客户的信赖。公司秉承诚信为主、服务至上的经营理念,凭借雄厚的资金实力与先进的技术,获得客户广泛好评
枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。调试USB设备,很重要的一点就是USB的枚举过程,只要枚举成功了,那么就已经成功大半了。USB架构中,hub负责检测设备的连接和断开,利用其中断IN端点(InterruptINEndpoint)来向主机(Host)报告。在系统启动时,主机轮询它的根hub(RootHub)的状态看是否有设备(包括子hub和子hub上的设备)连接。USB总线拓扑结构见下图(顶端为主机的RootHub):
这些信息可以在DbgView中看到。KdPrint()自身是一个宏,为了完整传入参数所以使用了两重括弧。这个比DbgPrint调用要稍好。因为在free版不被编译。经常查看DDK帮助了解各种函数的意义。循序渐进的驱动开发方式按照以下的步骤进行可以减少调试的时间:确定驱动程序需要哪些内核模式对象。确定驱动程序需要哪些上下文环境或者状态信息和这些信息的存储位置。首先编写DriverEntry和Unload例程,初不要增加即插即用支持,这样允许通过控制面板手动的测试驱动程序的装载和卸载。添加处理IRP_MJ_CREATE和IRP_MJ_CLOSE的操作和一些不需要进行设备的访问例程。然后可以使用一个简单的WIN32程序调用CreateFile和CloseHandle来测试。添加寻找和分配驱动程序的硬件的代码,还有在驱动程序被卸载后的重新分配硬件的代码。如果硬件支持即插即用,这一步测试硬件和驱动程序的自动加载能力。添加处理IRP_MJ_XXX函数的派遣例程,初的例程应该没有使用物理设备,后来新的代码应该使用简单的WIN32程序进行测试,例如ReadFile和WriteFile调用,或者其它支持的函数。