System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机领域,尤其涉及一种即插即用设备的驱动程序延迟加载方法及相关产品。
技术介绍
1、即插即用(plug and play,pnp)技术是一种标准化的硬件管理机制,旨在简化计算机系统中硬件设备(即支持即插即用功能的硬件设备)的安装和配置。当pnp设备连接到计算机时,操作系统能够自动识别该设备,并根据其硬件特征自动加载相应的驱动程序。同时,操作系统会为该pnp设备动态分配所需的系统资源,如中断请求、输入/输出端口和内存位置,以确保该pnp设备能够正常运行。pnp技术的实现大大降低了用户手动配置硬件设备的复杂性,提高了系统的可用性和灵活性。
2、随着即插即用技术的广泛应用,驱动程序的加载时机变得尤为重要。驱动程序作为操作系统与硬件设备之间的关键接口,其加载时机直接影响设备的识别和功能实现。当pnp设备连接到计算机时,操作系统不仅需要迅速识别该设备,还必须在适当的时机加载相应的驱动程序,以确保该设备能够正常运行。当前,驱动程序加载时机主要通过配置其启动类型来控制,驱动程序加载的启动类型共有五种,分别为service_boot_start(由操作系统加载程序加载驱动程序)、service_system_start(在操作系统初始化时由操作系统加载驱动程序)、service_auto_start(由服务控制管理器加载驱动程序)、service_demand_start(由驱动程序的pnp管理器或服务控制管理器按需加载驱动程序)和service_disabled(驱动程序被禁用,不由操作系统加载程序、服务控制管理器或p
3、现有技术中,驱动程序的加载时机遵循以下规则:(1)启动类型为service_boot_start的驱动程序先于启动类型为service_system_start或service_auto_start的驱动程序加载;(2)当多个驱动程序的启动类型均为service_boot_start或者均为service_system_start时,它们的加载顺序将根据各自的加载顺序组中指定的顺序进行加载;(3)子设备的驱动程序加载晚于父设备的驱动程序的加载。
4、然而,在现有技术中,当pnp设备1的驱动程序(第一驱动程序)和pnp设备2的驱动程序(第二驱动程序)的启动类型均为service_auto_start和service_demand_start中的任意一种时(第一驱动程序和第二驱动程序的启动类型可以相同也可以不同),如果第一驱动程序需要依赖于第二驱动程序成功加载后才能正常工作,并且pnp设备1和pnp设备2之间没有明确的父子关系,操作系统会随机加载这两个驱动程序。这种随机加载顺序可能导致第一驱动程序在第二驱动程序之前加载,从而使pnp设备1无法找到其所依赖的资源或功能,最终导致第一驱动程序加载失败或pnp设备1无法正常运行。
技术实现思路
1、本申请实施例提供了一种即插即用设备的驱动程序延迟加载方法及相关产品,能够灵活控制驱动程序的加载时机,解决pnp设备的驱动程序加载顺序不可控带来的驱动程序加载失败的问题。
2、第一方面,本申请提供了一种即插即用设备的驱动程序延迟加载方法,方法包括:
3、在接收到即插即用设备的第一驱动程序安装完毕的第一通知的情况下,控制程序将第一驱动程序的启动类型修改为第一类型,其中,第一类型用于指示禁止将第一驱动程序进行加载;
4、在第一驱动程序的启动类型为第一类型,并且,检测到第二驱动程序正常运行的情况下,将第一驱动程序的启动类型从第一类型修改为第二类型,其中,第二类型用于指示允许将第一驱动程序进行加载,第一驱动程序依赖第二驱动程序;
5、在第一驱动程序的启动类型为第二类型,并且,检测到第一驱动程序未运行的情况下,启用即插即用设备,并加载第一驱动程序。
6、上述方案中,首先,通过在第一驱动程序安装完成后立即将其启动类型修改为第一类型,即禁止将第一驱动程序进行加载,避免了在第二驱动程序尚未加载完成时,第一驱动程序试图加载而导致的加载失败的问题,其中,第一驱动程序依赖于第二驱动程序。然后,在检测到第二驱动程序正常运行(第二驱动程序已成功加载)后,才将第一驱动程序的启动类型修改为第二类型,即允许第一驱动程序加载。这一过程确保了第一驱动程序在其依赖的第二驱动程序成功加载并运行的前提下进行加载。最后,在第一驱动程序的启动类型为第二类型,并且,检测到第一驱动程序未运行(第一驱动程序未成功加载)的情况下,启用即插即用设备,并加载第一驱动程序。这种动态加载机制确保了系统能够根据实际运行状态灵活调整驱动程序的加载时机,从而有效解决驱动程序加载顺序不可控带来的驱动程序加载失败的问题。
7、基于第一方面,在可能的实现方式中,在启用即插即用设备之前,该方法还包括:释放即插即用设备的资源。
8、上述方案中,在启用即插即用设备之前,释放即插即用设备的资源具有重要意义。一方面,这一措施有助于清理该即插即用设备占用的系统资源,为驱动程序的加载提供一个干净的运行环境,从而避免因残留资源导致的驱动程序加载失败或错误,确保驱动程序能够顺利加载;另一方面,释放即插即用设备的资源可以避免即插即用设备占用的资源在启动过程中未被正确释放的情况,从而减少系统在后续操作中出现死锁、资源泄漏等问题,提高系统的稳定性,减少了因资源管理不当导致的崩溃或性能下降。
9、基于第一方面,在可能的实现方式中,在启用即插即用设备之后,该方法还包括:
10、将即插即用设备的第一驱动程序的启动类型从第二类型修改为第一类型,控制程序再次执行时,在检测到第二驱动程序正常运行的情况下,将第一驱动程序的启动类型从第一类型修改为第二类型。
11、应理解,操作系统在每次重启时都会重新加载驱动程序。如果在启用即插即用设备并成功加载第一驱动程序后,不将第一驱动程序的启动类型修改为第一类型,那么在操作系统重启后,第一驱动程序会重新加载。在此情况下,由于第一驱动程序的启动类型仍为第二类型,并且第一驱动程序在之前已完成安装,因此控制程序不会再接收到第一驱动程序安装完毕的第一通知。这将导致第一驱动程序的启动类型无法被修改为第一类型。由于第一驱动程序依赖的第二驱动程序尚未加载完成,若在此情况下尝试加载第一驱动程序,这将可能导致第一驱动程序加载失败。因此,本方案通过在成功加载第一驱动程序后,立即将其启动类型修改为第一类型,可以确保在操作系统每次启动时,第一驱动程序不会被自动加载,只有在控制程序检测到第二驱动程序正常运行时,才允许加载第一驱动程序。这一机制有效避免了驱动程序加载顺序不可控带来的驱动程序加载失败的问题。
12、基于第一方面,在可能的实现方式中,该方法还包括:
13、在第一驱动程序的启动类型为第二类型,并且,检测到第一驱动程序正常运行的情况下,将第一驱动程序的启动类型从第二类型修改为第一类型,控制程序再次执行时,在检测到第二驱动程序正常运行的情况下,将第一驱动程序的本文档来自技高网...
【技术保护点】
1.一种即插即用设备的驱动程序延迟加载方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,在启用所述即插即用设备之前,所述方法还包括:释放所述即插即用设备的资源。
3.根据权利要求1或2所述的方法,其特征在于,在启用所述即插即用设备之后,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
5.一种即插即用设备的驱动程序延迟加载装置,其特征在于,所述装置包括:
6.根据权利要求5所述的装置,其特征在于,在启用所述即插即用设备之前,所述控制模块,用于释放所述即插即用设备的资源。
7.根据权利要求5或6所述的装置,其特征在于,在启用所述即插即用设备之后,所述修改模块,用于将所述即插即用设备的第一驱动程序的启动类型从所述第二类型修改为所述第一类型,控制程序再次执行时,在检测到所述第二驱动程序正常运行的情况下,将所述第一驱动程序的启动类型从所述第一类型修改为所述第二类型。
8.根据权利要求5所述的装置,其特征在于,所述修改模块,用于在所述第一驱动程序的启动类
9.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;
10.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备集群运行时,使得所述计算设备集群执行如权利要求1至4任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如权利要求1至4任一项所述的方法。
...【技术特征摘要】
1.一种即插即用设备的驱动程序延迟加载方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,在启用所述即插即用设备之前,所述方法还包括:释放所述即插即用设备的资源。
3.根据权利要求1或2所述的方法,其特征在于,在启用所述即插即用设备之后,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
5.一种即插即用设备的驱动程序延迟加载装置,其特征在于,所述装置包括:
6.根据权利要求5所述的装置,其特征在于,在启用所述即插即用设备之前,所述控制模块,用于释放所述即插即用设备的资源。
7.根据权利要求5或6所述的装置,其特征在于,在启用所述即插即用设备之后,所述修改模块,用于将所述即插即用设备的第一驱动程序的启动类型从所述第二类型修改为所述第一类型,控制程序再次执行时,在检测到所述第二驱动程序正常运行的情况下,将所...
【专利技术属性】
技术研发人员:曾昭峥,吴礼磊,邬国权,
申请(专利权)人:深圳华为云计算技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。