首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

找不到驱动程序- Laravel

找不到驱动程序是指在使用Laravel框架时,出现了无法找到所需驱动程序的错误。这通常是由于缺少相关的扩展或配置问题导致的。

Laravel是一款流行的PHP开发框架,它提供了丰富的功能和工具,用于快速构建高质量的Web应用程序。在Laravel中,驱动程序用于与各种外部服务和组件进行交互,例如数据库、缓存、邮件、队列等。

解决"找不到驱动程序"错误的方法取决于具体的驱动程序类型。以下是一些常见的驱动程序及其解决方法:

  1. 数据库驱动程序:
    • 概念:数据库驱动程序用于连接和操作数据库。
    • 分类:常见的数据库驱动程序有MySQL、PostgreSQL、SQLite等。
    • 优势:不同的数据库驱动程序具有各自的特点和优势,可以根据项目需求选择合适的数据库驱动程序。
    • 应用场景:适用于需要与数据库进行交互的Web应用程序。
    • 腾讯云相关产品:腾讯云提供了云数据库MySQL、云数据库PostgreSQL等产品,用于在云上部署和管理数据库。详情请参考腾讯云数据库产品介绍:https://cloud.tencent.com/product/cdb
  2. 缓存驱动程序:
    • 概念:缓存驱动程序用于存储和获取应用程序的缓存数据。
    • 分类:常见的缓存驱动程序有文件缓存、数据库缓存、Redis缓存等。
    • 优势:不同的缓存驱动程序具有各自的性能和可扩展性优势,可以根据项目需求选择合适的缓存驱动程序。
    • 应用场景:适用于需要提高应用程序性能和响应速度的场景。
    • 腾讯云相关产品:腾讯云提供了云缓存Redis等产品,用于在云上部署和管理缓存服务。详情请参考腾讯云云缓存Redis产品介绍:https://cloud.tencent.com/product/redis
  3. 邮件驱动程序:
    • 概念:邮件驱动程序用于发送和接收电子邮件。
    • 分类:常见的邮件驱动程序有SMTP、Sendmail、Mailgun等。
    • 优势:不同的邮件驱动程序具有各自的特点和优势,可以根据项目需求选择合适的邮件驱动程序。
    • 应用场景:适用于需要发送和接收电子邮件的Web应用程序。
    • 腾讯云相关产品:腾讯云提供了云邮件服务等产品,用于在云上发送和接收电子邮件。详情请参考腾讯云云邮件服务产品介绍:https://cloud.tencent.com/product/ess

以上是一些常见的驱动程序及其解决方法。在使用Laravel框架时,如果遇到找不到驱动程序的错误,可以根据具体的错误提示和需求,检查相关的扩展和配置是否正确,并选择合适的驱动程序进行配置和安装。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • WDM 驱动程序开发[通俗易懂]

    1.概述 引入了全新的WDM (Win32 Driver Model)的驱动程序架构,说是新技术,其实早在1997年Microsoft就提出了该项技术并在Windows 98中得到了充分的应用,换句话说,Windows 98也支持WDM。这样WDM就成为了一个跨平台的驱动程序模型不仅如此WDM驱动程序还可以在不修改源代码的情况下经过重新编译后在非Intel平台上运行。 2.WDM设备驱动程序的特点和原理2.1通用驱动程序对基本上一样的硬件,因为他们共享一个总线或完成类似的任务,设备驱动程序可以使用这些标准的驱动程序功能,使公共总线的共享容易,且更容易写出新的驱动程序,总线驱动程序,如USB、1394,和类驱动程序。(1)Win32程序接口: 可以使用Win32函数像访问文件那样访问设备CreateFile() 、Closehandle()、ReadFile()、WriteFile()、DeviceIoControl()用于发出特殊请求,可发送数据给驱动和从驱动得到数据,IOCTL代码可以是预先定义的也可是自己定义的。(2)创建设备 大多数WDM设备对象都是在PnP管理器中调用AddDevice入口时创建,这个PnP 例程在插入新设备和安装Inf文件时被调用,此后一系列的PnP IRP被发送到驱动程序,指示设备应如何启动和查询它的功能2.2WDM-的工作原理WDM是在NT 4.0驱动程序结构上发展起来的,所以它与NT 4.0驱动程序极为相似 ,但是它却有了本质上的提高,比如它支持USB、IEEE 1394、ACPI等全新的硬件标准。 虽然Windows 98与Windows 2000都支持WDM,可是并不意味着Windows 98下的VxD可以在 Windows 2000下运行,而NT下的WDM却可以在Windows 98下运行。不过原先准备在两个平台上同时运行需要编写两个截然不同的驱动程序,而现在只需要编写一个WDM驱动程序就 可以了。同NT 4.0驱动程序一样,WDM驱动程序也是分层的,即不同层上的驱动程序有着不同的优先权,而Windows 9x下的VxD则没有此结构。另外,WDM还引入了功能设备对象 FDO(functional device object)与物理设备对象PDO(physical device object)两 个新概念来描述硬件,一个PDO代表一个真实硬件,在驱动程序看来则是一个FDO 。 另外值得注意的是,一个硬件只允许有一个PDO,但却可以拥有多个FDO,而在驱动程序中我们不是直接操作硬件而是操作相应的PDO与FDO。在Ring-3与Ring-0通讯方面,操作系统为每一个用户请求打包成一个IRP(IO Request Packet)结构,将其发送至驱动程序并通过识别IRP中的PDO来识别是发送给哪一个设备的。另外,在驱动程序的加载方面WDM既不靠驱动程序名称也不靠一个具有某种特殊意义的ID,而是依靠一个128位的GUID来识别驱动程序(Windows下许多东西都是靠此进行识别的)。 2.3 IRP处理 I/O请求包IRP是驱动程序操作的中心,IRP是一个内核对象,它是预先定义好的数据结构,带有一组对它进行操作的I/O管理器例程,I/O管理器接受一个I/O请求,然后将它传送到合适的驱动程序栈中的最高驱动程序之前,分配并处始化一个IRP,每个I/O请求有主功能代码 2.4 IRP参数比如一个写的I/O请求转换成一个IRP时,I/O管理器填写主要的IRP首部,并构造第一个个栈单元,对写请求来讲,首部包含用户缓冲区信息,而栈单元则包含写的具体参数。如果调用另一个驱动则必须创建下一个栈单元。一个IRP到栈顶时,使用PIO_STACK_LOCATION IoGetCurrentIrpStackLocation( IN PIRP Irp );IoGetCurrentIrpStackLocation returns a pointer to the caller’s stack location in the given IRP。如决定需要把这个IRP沿设备栈向下传递,使用IoCopyCurrentIrpStackLocationToNext or IoSkipCurrentIrpStackLocation简单的将内容复制到下一个单元,如果要更改下一个栈单元,要使用LOCATION IoGetNextIrpStackLocation(IN PIRP Irp );IoGetNextIrpStackLocation gives a higher level driver access to the next-lower driver’s I/O stack location in an IRP so the caller can set it up for the l

    02

    GetLastError错误代码

    〖0〗-操作成功完成。   〖1〗-功能错误。   〖2〗-系统找不到指定的文件。   〖3〗-系统找不到指定的路径。   〖4〗-系统无法打开文件。   〖5〗-拒绝访问。   〖6〗-句柄无效。   〖7〗-存储控制块被损坏。   〖8〗-存储空间不足,无法处理此命令。   〖9〗-存储控制块地址无效。   〖10〗-环境错误。   〖11〗-试图加载格式错误的程序。   〖12〗-访问码无效。   〖13〗-数据无效。   〖14〗-存储器不足,无法完成此操作。   〖15〗-系统找不到指定的驱动器。   〖16〗-无法删除目录。   〖17〗-系统无法将文件移到不同的驱动器。   〖18〗-没有更多文件。   〖19〗-介质受写入保护。   〖20〗-系统找不到指定的设备。   〖21〗-设备未就绪。   〖22〗-设备不识别此命令。   〖23〗-数据错误 (循环冗余检查)。   〖24〗-程序发出命令,但命令长度不正确。   〖25〗-驱动器无法找出磁盘上特定区域或磁道的位置。   〖26〗-无法访问指定的磁盘或软盘。   〖27〗-驱动器找不到请求的扇区。   〖28〗-打印机缺纸。   〖29〗-系统无法写入指定的设备。   〖30〗-系统无法从指定的设备上读取。   〖31〗-连到系统上的设备没有发挥作用。   〖32〗-进程无法访问文件,因为另一个程序正在使用此文件。   〖33〗-进程无法访问文件,因为另一个程序已锁定文件的一部分。   〖36〗-用来共享的打开文件过多。   〖38〗-到达文件结尾。   〖39〗-磁盘已满。   〖50〗-不支持该请求。   〖51〗-远程计算机不可用 。   〖52〗-在网络上已有重复的名称。   〖53〗-找不到网络路径。   〖54〗-网络忙。   〖55〗-指定的网络资源或设备不再可用。   〖56〗-已到达网络 BIOS 命令限制。   〖57〗-网络适配器硬件出错。   〖58〗-指定的服务器无法运行请求的操作。   〖59〗-发生意外的网络错误。   〖60〗-远程适配器不兼容。   〖61〗-打印机队列已满。   〖62〗-无法在服务器上获得用于保存待打印文件的空间。   〖63〗-删除等候打印的文件。   〖64〗-指定的网络名不再可用。   〖65〗-拒绝网络访问。   〖66〗-网络资源类型错误。   〖67〗-找不到网络名。   〖68〗-超过本地计算机网卡的名称限制。   〖69〗-超出网络 BIOS 会话限制。   〖70〗-远程服务器已暂停,或正在启动过程中。   〖71〗-当前已无法再同此远程计算机连接,因为已达到计算机的连接数目极限。   〖72〗-已暂停指定的打印机或磁盘设备。   〖80〗-文件存在。   〖82〗-无法创建目录或文件。   〖83〗-INT 24 失败。   〖84〗-无法取得处理此请求的存储空间。   〖85〗-本地设备名已在使用中。   〖86〗-指定的网络密码错误。   〖87〗-参数错误。   〖88〗-网络上发生写入错误。   〖89〗-系统无法在此时启动另一个进程。   〖100〗-无法创建另一个系统信号灯。   〖101〗-另一个进程拥有独占的信号灯。   〖102〗-已设置信号灯且无法关闭。   〖103〗-无法再设置信号灯。   〖104〗-无法在中断时请求独占的信号灯。   〖105〗-此信号灯的前一个所有权已结束。   〖107〗-程序停止,因为替代的软盘未插入。   〖108〗-磁盘在使用中,或被另一个进程锁定。   〖109〗-管道已结束。   〖110〗-系统无法打开指定的设备或文件。   〖111〗-文件名太长。   〖112〗-磁盘空间不足。   〖113〗-无法再获得内部文件的标识。   〖114〗-目标内部文件的标识不正确。   〖117〗-应用程序制作的 IOCTL 调用错误。   〖118〗-验证写入的切换参数值错误。   〖119〗-系统不支持请求的命令。   〖120〗-此功能只被此系统支持。   〖121〗-信号灯超时时间已到。   〖122〗-传递到系统调用的数据区太小。   〖123〗-文件名、目录名或卷标语法不正确。   〖124〗-系统调用级别错误。   〖125〗-磁盘没有卷标。   〖126〗-找不到指定的模块。   〖127〗-找不到指定的程序。   〖128〗-没有等候的子进程。   〖130〗-试图使用操作(而非原始磁盘 I/O)的已打开磁盘分区的文件句柄。   〖131〗-试图移动文件指针到文件开头之前。   〖132〗-无法在指定的设备或文件上设置文件

    01

    win7蓝屏错误代码对照表(windows蓝屏合集)

    windows蓝屏错误对照表 0 0x00000000 作业完成。 1 0x00000001 不正确的函数。 2 0x00000002 系统找不到指定的档案。 3 0x00000003 系统找不到指定的路径。 4 0x00000004 系统无法开启档案。 5 0x00000005 拒绝存取。 6 0x00000006 无效的代码。 7 0x00000007 储存体控制区块已毁。 8 0x00000008 储存体空间不足,无法处理这个指令。 9 0x00000009 储存体控制区块地址无效。 10 0x0000000A 环境不正确。 11 0x0000000B 尝试加载一个格式错误的程序。 12 0x0000000C 存取码错误。 13 0x0000000D 资料错误。 14 0x0000000E 储存体空间不够,无法完成这项作业。 15 0x0000000F 系统找不到指定的磁盘驱动器。 16 0x00000010 无法移除目录。 16 0x00000010 无法移除目录。 17 0x00000011 系统无法将档案移到 其它的磁盘驱动器。 18 0x00000012 没有任何档案。 19 0x00000013 储存媒体为写保护状态。 20 0x00000014 系统找不到指定的装置。 21 0x00000015 装置尚未就绪。 22 0x00000016 装置无法识别指令。 23 0x00000017 资料错误 (cyclic redundancy check) 24 0x00000018 程序发出一个长度错误的指令。 25 0x00000019 磁盘驱动器在磁盘找不到 持定的扇区或磁道。 26 0x0000001A 指定的磁盘或磁盘无法存取。 27 0x0000001B 磁盘驱动器找不到要求的扇区。 28 0x0000001C 打印机没有纸。 29 0x0000001D 系统无法将资料写入指定的磁盘驱动器。 30 0x0000001E 系统无法读取指定的装置。 31 0x0000001F 连接到系统的某个装置没有作用。 32 0x00000020 The process cannot access the file because it is being used by another process. 33 0x00000021 档案的一部份被锁定, 现在无法存取。 34 0x00000022 磁盘驱动器的磁盘不正确。 请将 %2 (Volume Serial Number: %3) 插入磁盘机%1。 36 0x00000024 开启的分享档案数量太多。 38 0x00000026 到达档案结尾。 39 0x00000027 磁盘已满。 50 0x00000032 不支持这种网络要求。 51 0x00000033 远程计算机无法使用。 52 0x00000034 网络名称重复。 53 0x00000035 网络路径找不到。 54 0x00000036 网络忙碌中。 55 0x00000037 The specified network resource or device is no longer available. 56 0x00000038 The network BIOS command limit has been reached. 57 0x00000039 网络配接卡发生 问题。 58 0x0000003A 指定的服务器无法执行要求的作业。 59 0x0000003B 网络发生意外错误。 60 0x0000003C 远程配接卡不兼容。 61 0x0000003D 打印机队列已满。 62 0x0000003E 服务器的空间无法储存等候打印的档案。 63 0x0000003F 等候打印的档案已经删除。 64 0x00000040 指定的网络名称无法使用。 65 0x00000041 拒绝存取网络。 65 0x00000041 拒绝存取网络。 66 0x00000042 网络资源类型错误。 67 0x00000043 网络名称找不到。 68 0x00000044 超过区域计算机网络配接卡的名称限制。 69 0x00000045 超过网络 BIOS 作业阶段的限制。 70 0x00000046 远程服务器已经暂停或者正在起始中。 71 0x00000047 由于联机数目已达上限,此时无法再联机到这台远程计算机。 72 0x00000048 指定的打印机或磁盘装置已经暂停作用。 80 0x00000050 档案已经存在。 82

    02

    电脑蓝屏代码大全

    编号 代码 含意 0 0x00000000 作业完成。 1 0x00000001 不正确的函数。 2 0x00000002 系统找不到指定的档案。 3 0x00000003 系统找不到指定的路径。 4 0x00000004 系统无法开启档案。 5 0x00000005 拒绝存取。 6 0x00000006 无效的代码。 7 0x00000007 储存体控制区块已毁。 8 0x00000008 储存体空间不足,无法处理这个指令。 9 0x00000009 储存体控制区块地址无效。 10 0x0000000A 环境不正确。 11 0x0000000B 尝试加载一个格式错误的程序。 12 0x0000000C 存取码错误。 13 0x0000000D 资料错误。 14 0x0000000E 储存体空间不够,无法完成这项作业。 15 0x0000000F 系统找不到指定的磁盘驱动器。 16 0x00000010 无法移除目录。 16 0x00000010 无法移除目录。 17 0x00000011 系统无法将档案移到 其它的磁盘驱动器。 18 0x00000012 没有任何档案。 19 0x00000013 储存媒体为写保护状态。 20 0x00000014 系统找不到指定的装置。 21 0x00000015 装置尚未就绪。 22 0x00000016 装置无法识别指令。 23 0x00000017 资料错误 (cyclic redundancy check) 24 0x00000018 程序发出一个长度错误的指令。 25 0x00000019 磁盘驱动器在磁盘找不到 持定的扇区或磁道。 26 0x0000001A 指定的磁盘或磁盘无法存取。 27 0x0000001B 磁盘驱动器找不到要求的扇区。 28 0x0000001C 打印机没有纸。 29 0x0000001D 系统无法将资料写入指定的磁盘驱动器。 30 0x0000001E 系统无法读取指定的装置。 31 0x0000001F 连接到系统的某个装置没有作用。 32 0x00000020 文件被另一进程使用中不能访问The process cannot access the file because it is being used by another process. 33 0x00000021 档案的一部份被锁定, 现在无法存取。 34 0x00000022 磁盘驱动器的磁盘不正确。 请将 %2 (Volume Serial Number: %3) 插入磁盘机%1。 36 0x00000024 开启的分享档案数量太多。 38 0x00000026 到达档案结尾。 39 0x00000027 磁盘已满。 50 0x00000032 不支持这种网络要求。 51 0x00000033 远程计算机无法使用。 52 0x00000034 网络名称重复。 53 0x00000035 网络路径找不到。 54 0x00000036 网络忙碌中。 55 0x00000037 特殊的网络资源或设备不可再使用The specified network resource or device is no longer available. 56 0x00000038 网络BIOS命令已达到限制The network BIOS command limit has been reached. 57 0x00000039 网络配接卡发生问题。 58 0x0000003A 指定的服务器无法执行要求的作业。 59 0x0000003B 网络发生意外错误。 60 0x0000003C 远程配接卡不兼容。 61 0x0000003D 打印机队列已满。 62 0x0000003E 服务器的空间无法储存等候打印的档案。 63 0x0000003F 等候打印的档案已经删除。 64 0x00000040 指定的网络名称无法使用。 65 0x00000041 拒绝存取网络。 65 0x00000041 拒绝存取网络。 66 0x00000042 网络资源类型错误。 67 0x00000043 网络名称找不到。 68 0x00000044 超过区域计算机网络配接卡的名称限制。 69 0x00000045 超过网络 BIOS 作业阶段的限制。 70 0x00000046 远程服务器已经暂停或者正在起始中。 71 0x00000047 由于联机数目已达上限,此时无法再联机到这台远程计算机。 72 0x00000048 指定的打印机或磁盘装置已经暂停作用。 80 0x00000050 档案已经存在。 82 0x00000052 无法建立目录或档案。 83 0x00000053 INT 2484 0x00000054 处理这项要求的储存体无法使用。 85 0x00000055 近端装置名称已经在使用中。 86 0x000

    02

    部分蓝屏报错代码及含意

    0 0x0000 作业完成。 1 0x0001 不正确的函数。 2 0x0002 系统找不到指定的档案。 3 0x0003 系统找不到指定的路径。 4 0x0004 系统无法开启档案。 5 0x0005 拒绝存取。 6 0x0006 无效的代码。 7 0x0007 储存体控制区块已毁。 8 0x0008 储存体空间不足,无法处理这个指令。 9 0x0009 储存体控制区块位址无效。 10 0x000A 环境不正确。 11 0x000B 尝试载入一个格式错误的程式。 12 0x000C 存取码错误。 13 0x000D 资料错误。 14 0x000E 储存体空间不够,无法完成这项作业。 15 0x000F 系统找不到指定的磁盘。 16 0x0010 无法移除目录。 17 0x0011 系统无法将档案移到 其他的磁盘。 18 0x0012 没有任何档案。 19 0x0013 储存媒体为防写状态。 20 0x0014 系统找不到指定的装置。 21 0x0015 装置尚未就绪。 22 0x0016 装置无法识别指令。 23 0x0017 资料错误 (cyclic redundancy check) 24 0x0018 程式发出一个长 度错误的指令。 25 0x0019 磁盘在磁盘找不到 持定的磁区或磁轨。 26 0x001A 指定的磁盘或磁片无法存取。 27 0x001B 磁盘找不到要求的磁区。 28 0x001C 打印机没有纸。 29 0x001D 系统无法将资料写入指定的磁盘。 30 0x001E 系统无法读取指定的装置。 31 0x001F 连接到系统的某个装置没有作用。 32 0x0020 The process cannot access the file because it is being used by another process。 33 0x0021 档案的一部份被锁定,现在无法存取。 34 0x0022 磁盘的磁片不正确。 请将 %2 (Volume Serial Number: %3) 插入磁 碟 机%1。 36 0x0024 开启的分享档案数量太多。 38 0x0026 到达档案结尾。 39 0x0027 磁盘已满。 50 0x0032 不支援这种网络要求。 51 0x0033 远端电脑无法使用。 52 0x0034 网络名称重复。 53 0x0035 网络路径找不到。 54 0x0036 网络忙碌中。 55 0x0037 The specified network resource or device is no longer available。 56 0x0038 The network BIOS command limit has been reached。 57 0x0039 网络配接卡发生问题。 58 0x003A 指定的服务器无法执行要求的作业。 59 0x003B 网络发生意外错误。 60 0x003C 远端配接卡不相容。 61 0x003D 打印机伫列已满。 62 0x003E 服务器的空间无法储存等候列印的档案。 63 0x003F 等候列印的档案已经删除。 64 0x0040 指定的网络名称无法使用。 65 0x0041 拒绝存取网络。 66 0x0042 网络资源类型错误。 67 0x0043 网络名称找不到。 68 0x0044 超过区域电脑网络配接卡的名称限制。 69 0x0045 超过网络BIOS作业阶段的限制。 70 0x0046 远端服务器已经暂停或者正在起始中。 71 0x0047 由於连线数目已达上限,此时无法再连线到这台远端电脑。 72 0x0048 指定的打印机或磁盘装置已经暂停作用。 80 0x0050 档案已经存在。 82 0x0052 无法建立目录或档案。 83 0x0053 INT 24 失败 84 0x0054 处理这项要求的储存体无法使用。 85 0x0055 近端装置名称已经在使用中。 86 0x0056 指定的网络密码错误。 87 0x0057 叁数错误。 88 0x0058 网络发生资料写入错误。 89 0x0059 此时系统无法执行其他行程。 100 0x0064 无法建立其他的系统semaphore。 101 0x0065 属於其他行程专用的semaphore 。 102 0x0066 semaphore已经设定,而且无法关闭。 103 0x0067 无法指定semaphore 。 104 0x0068 在岔断时间无法要求专用的semaphore 。 105 0x0069 此semaphore先前的拥有权已经结束。 106 0x006A 请将磁片插入 %1。 107 0x006B 因为

    01

    基于WDM的专用USB设备的驱动程序开发[通俗易懂]

    1引言 目前对于诸如USB鼠标、键盘等这样的计算机标准外设,Windows系统已经提供了标准的驱动程序,用户无需再进行任何开发工作。而开发专用USB设备,需要开发专用的驱动程序。 Windows2000/XP操作系统不允许用户程序直接访问硬件设备。为了实现对硬件设备的访问和控制,必须通过操作系统所认可的驱动程序对硬件设备实现间接访问和控制。驱动程序通常被认为是操作系统的组成部分,所以,开发驱动程序有严格的规范,被认为是“计算机高手”的工作。而利用DDK进行基于WDM(Win32 Driver Model)驱动程序开发,使驱动程序的开发变成了一项比较简单的工作。 2 Win32驱动程序模型 USB设备驱动程序必须符合由Microsoft为Windows 98及其后版本所定义的Win32驱动程序模型(Win32 Driver Model,WDM)规格。这些驱动程序称为WDM驱动程序,扩展名为.sys。 WDM定义了一个基本模型,处理所有类型的数据。例如,USB类驱动程序为所有USB 设备提供了一个抽象的模型,并具有由所有客户驱动程序使用的定义好的接口。有了对所有设备类型共同的核心驱动程序模型,使驱动程序开发人员更容易从一种类型的设备移动到另外一种类型的设备上去。而且它也意味着驱动程序模型的内核实现尽可能是固定的。 USB是使用标准Windows系统USB类驱动程序访问USBDI(Windows USB驱动程序接口)的USB设备驱动程序。USBD.sys就是Windows系统中的USB类驱动程序,它使用UHCD.sys来访问通用的主控制器接口设备,或者使用OpenHCI.sys访问开放式主控制器接口设备。USBHUB.sys是根集线器和外部集线器的USB驱动程序。在PCI枚举器发现了USB主控制器之后,它会自动装入相关的驱动程序。 3 Windows USB驱动程序接口 大多数客户化的USB设备需要由用户来编写设备驱动程序,以响应内核态或用户应用程序的请求。在内核级,命令由客户驱动程序使用内部IOCTL发送给USB系统,例如IOCTL-INTERNAL-USB-SUBMIT-URB允许发出USB请求块(URB)给系统USB驱动程序。URB允许发出几个功能调用给USB系统。用户态USB实用程序也可以发出几个普通IOCTL给USB设备,目的仅仅是得到连接设备的信息。 3.1函数驱动程序 函数驱动程序(function driver)让应用程序与USB设备,通过API函数来沟通。这些API函数属于Windows的Win32子系统,Win32子系统同时也管理着执行应用程序。函数驱动程序与较低级的总线驱动程序沟通,总线驱动程序控制着硬件。 图1是应用程序与各个驱动程序,如何一起完成USB通信的结构图。当设备或子类别的要求超过类别驱动程序的能力时,会有辅助的过滤器驱动程序来类别驱动程序的能力。一个上层的过滤驱动程序位于类别驱动程序的上方。这样,从客户应用程序传来的要求,会先经过上层的过滤驱动程序,然后才传给类别函数驱动程序。一个下层的过滤驱动程序位于类别驱动程序和总线驱动程序之间,如图1。类别驱动程序会将要求传给下层的过滤驱动程序,然后再传给总线驱动程序。 图1应用程序与驱动程序完成USB通信的结构 通用串行总线驱动程序(USBD.SYS)是USB系统中负责管理通用串行总线的工作,位于主机上的一个软件。USBD负责控制所有的USB协议操作和高层的中断处理控制。在Windows98及以上版本中,Microsoft定义了一个新的设备驱动程序模型,称之为Windows设备驱动程序模型(WindowsDriver Model或WDM)。 USB客户应用程序也是一种设备驱动程序,通过定义的一个称之为USB接口的层间接口来访问其下方的USB软件。应用程序正是通过这些USB客户软件来实现与USB设备之间的通信。 针对USB客户应用程序的开发,相应版本的Windows操作系统的设备驱动程序开发包(Device Driver Developer’s Kit,即DDK)给出了相应的USB接口函数。并提供了对于这些函数具体使用的参考文档。 3.2 USBDI的IOCTL 为了编写USB设备驱动程序,通常还要在源代码中包含DDK所提供的几个头文件。这些头文件在Windows98下存放在/98DDK/inc/win98目录中,在Windows 2000下存放在/NTDDK/inc/win2000目录中。这些头文件的用途可以总结如下: usb100.h 定义了在USB设备驱动程序设计中所要用到的各种常量和数据结构。 Usbdi.h USBDI例程,其中包括对USBD和USB设备驱动程序通用的数据结构,适用于内核和用户模式。 Usbdlib.h URB构造和各种例程,定义了USBD所输出的服务,适用于内核和用户模式。 Usbioctl.h 给出了对IOC

    02
    领券