利用DriverStudio3.2开发USB驱动程序:188体育在线

激光雕刻机 | 2020-11-16
本文摘要:利用DriverStudio3.2产品研发USB驱动程序利用DriverStudio3.2产品研发USB驱动程序利用DriverStudio产品研发驱动程序比必需启用DDK产品研发一起要省时省力的多。

利用DriverStudio3.2产品研发USB驱动程序利用DriverStudio3.2产品研发USB驱动程序利用DriverStudio产品研发驱动程序比必需启用DDK产品研发一起要省时省力的多。如同利用MFC产品研发一般的桌面程序一样,并非自由选择SDK进行程序流程的编写。

也就是说,DriverStudio和DDK的关联如同MFC和SDK的关联一样,DriverStudio仅仅对DDK中的各种各样构造、涵数进行了PCB,便捷开发者进行最底层涵数的启用,如DriverStudio的Kirp类便是对DDK中IRP全部作业者的PCB罢了。1/20下边比较简单解读一下利用DriverStudio3.2产品研发一个USB驱动程序的流程。这一USB设备有3个双重端点,每一个端点配置以下:EP种类详细地址buffer(Bytes)0IN/OUTControl0x80/0x0016/161IN/OUTBulk0x81/0x0164/642IN/OUTBulk0x82/0x0264/642/20驱动程序务必搭建作用便是操控设备上LED灯亮和亡国,及其根据Endpoint2对设备进行载入。因为DriveStudio由好多个一部分组成,大家写成这一驱动程序要是选用DriverWork。

在这儿,大家假定阅读者早就精确改装了DriverWorks,而且早就c语言编译器了每个库文件(闻本blog前边解读內容)。3/201、起动VC,从VCIDE莱单DriverStudio中自由选择DriverWizard,如图所示1下图提示框中,写成上项目规划。在这儿,大家将这一新项目称之为:TEST,所属文件目录为D:TEST。随后点按键Next;4/202、在接下去这一提示框中(如图2),大家务必自由选择驱动程序种类。

因为USB设备驱动程序是WDM种类,因此 我们在的一个单选按钮中自由选择“WDMDriver”;第二个单选按钮就是指所编写的驱动程序否务必C 架构的抵制,如自由选择此项,所溶解的驱动程序类被PCB成驱动器类和设备类两类,不然驱动程序类以DDK方式经常会出现,一般来说自由选择抵制C 架构。点按键Next。5/203、在接下去这一提示框中(如图所示3),大家务必自由选择驱动程序种类。

因为USB设备驱动程序是WDM种类,因此 大家自由选择第二项而且点按键Next。6/204、在第4个提示框中(如图4),自由选择大家驱动程序所作业者系统总线种类。这儿,大家自由选择USB。

在USBVendorID和USBProductID中放进USB设备VID和PID。假定我们USB设备VID和PID分别是16十进制0471和1801。随后点按键Next。

7/205、在接下去提示框中(如5),大家务必重进Endpoint1和Endpoint2界定。因为在USB中要求Endpoint0是必不可少不会有,因此 我们不务必对Endpoint0进行界定。在溶解的驱动程序设备类中KusbLowerDevice的案例m_Lower就意味着了端点0(Endpoint0),能够根据m_Lower这一环境变量操控管路来操控USB设备,如配置USB设备、传送分别操控和情况督促等。

点Add...按键,插进如图所示5-1下图提示框,各自加进Endpoint1和Endpoint2的载入界定。在其中,PipeName指端点名字,不可以不断;EndPointType指端点种类,额外为操控、大批量、终断和即时四种;EndPointAddress所说各端点的端点号,仅次偏移为15(协议书要求,USB设备具有除零端点之外至少15个端点),同一端点的輸出和键入端点号详细地址是一样的,范畴从1~15。8/20TransferDirect指所界定的是輸出端点還是键入端点;MaximunPacketSize指所界定种类的端点一次能传送的仅次包在尺寸,操控和大批量端点为8163264字节数,终断端点为64字节数,即时端点为1023字节数。这时,将在设备类头文件种加进以下编码:KusbPipeEndPoint1IN;//PipeforUSBendpointaddress81,typeBULKKusbPipeEndPoint1OUT;//PipeforUSBendpointaddress1,typeBULKKusbPipeEndPoint2IN;//PipeforUSBendpointaddress82,typeBULKKusbPipeEndPoint2OUT;//PipeforUSBendpointaddress2,typeBULK9/20在设备类源代码种加进以下编码://InitializeeachPipeobjectEndPoint1IN.Initialize(m_Lower,81,64);EndPoint1OUT.Initialize(m_Lower,1,64);EndPoint2IN.Initialize(m_Lower,82,64);EndPoint2OUT.Initialize(m_Lower,2,64);10/20从所述源码中能够显出,每一个輸出端点的具体详细地址从0x81刚开始,每一个键入端点的具体详细地址从0x01刚开始逐一降低。

比如,详细地址数值0x82的端点是一个端点号为2的IN端点。具有接下去,以后按Next按键。

11/20图5-112/206、自由选择TRP应急处置种类。WDM驱动程序必不可少抵制IRP_MJ_SYSTEM_CONTROL、IRP_MJ_POWER和IRP_MJ_PNP。

IRP_MJ_CREATE、IRP_MJ_READ、IRP_MJ_WRITE、IRP_MJ_CLOSE、IRP_MJ_CLEANUP或IRP_MJ_DEVICE_CONTROL应急处置应用程序和驱动程序中间的通讯工作中。13/207、自由选择IO端口号的载入方法。IRP_MJ_READ和IRP_MJ_WRITE后边的选择项指应用程序用ReadFile或WriteFile与驱动程序进行传输数据时,驱动程序依据设备目标开创时的特点标志位(DO_BUFFER_IO或DO_DIRECT_IO)来规定该怎样出示应用程序的缓冲区域详细地址。

188体育平台

当自由选择BufferAccess为Buffered时,设备目标开创时的特点标志位被划归DO_BUFFER_IO,驱动程序可各自在Kirp::BufferedReadDest和Kirp::BufferedWriteSource中出示到载入缓冲区域的详细地址;当自由选择BufferAccess为Direct时,设备目标开创时的特点标志位被划归DO_DIRECT_IO,IO管理人员将看准应用程序的数据信息缓冲区域,并开创一个MDL,驱动程序可在Kirp::Mdl来出示到载入缓冲区域的详细地址。14/20当应用程序用DeviceIoControl涵数和驱动程序进行数据通讯时,“Add”等按键用于界定DeviceIoControl的操控指令,即给驱动程序降低一些IOCTL控制模块。

如图所示7-1下图。当自由选择BufferAccess为Buffered时,驱动程序根据Kirp::IoctlBuffer来出示应用程序的輸出、键入缓冲区域;当自由选择BufferAccess为Direct时驱动程序根据Kirp::IoctlBuffer来出示应用程序的輸出缓冲区域,根据Kirp::Mdl来得到 出示应用程序的键入缓冲区域。第三个自由选择指应用程序合上设备的方法:以标记相接名或GUID接口标准(Interface)。

15/20图7-116/208、在如图所示8下图提示框中,我们不务必开创一切注册表项,因此 必需按Next按键。9、对WDM抵制的电池管理选择项进行自由选择。WDM驱动程序必不可少抵制电池管理,电源管理器用以IRP指令驱动程序来变化开关电源情况、等待并呼吁系统软件清醒恶性事件和搜索驱动程序的设备。

17/2010、WDM驱动程序能够抵制WMI,作为管理方法电子计算机。18/20接下去的Installation、Additional和Summary三个自由选择提示框按环境变量方法就可,进下图11、图12和图13下图。

那样,利用DriverWizard就开创了一个基础USB驱动程序架构。


本文关键词:188体育在线,188体育欢迎访问,188体育平台,188体育买球网,188体育首页

本文来源:188体育在线-www.chuangshin.com