首页 > 其他分享 >微软官方驱动例子SimpleAudioSample安装失败的解决

微软官方驱动例子SimpleAudioSample安装失败的解决

时间:2024-12-15 12:47:09浏览次数:5  
标签:dvi err 微软 SimpleAudioSample 50 例子 inf ndv

无法编译

微软有一个Bug,Spectre,现在被缓解了,但是代价是你要在VS2022中安装一大把的环境,否则此例子无法编译……

image

无法安装

devcon.exe,如图执行后得到:

image

但是设备管理器里找得到这个设备……

image

说明是安装了,但安装之后并没有执行起来

无法安装——从devcon.exe定位

devcom.exe的输出没有一点有用的信息。在devcon.exe的源代码(Windows-driver-samples\setup\devcon)中找报错的位置,修改为:

    newdevMod = LoadLibrary(TEXT("newdev.dll"));
    if(!newdevMod) {
        MSG("");
        goto final;
    }
    UpdateFn = (UpdateDriverForPlugAndPlayDevicesProto)GetProcAddress(newdevMod,UPDATEDRIVERFORPLUGANDPLAYDEVICES);
    if(!UpdateFn)
    {
        MSG("");
        goto final;
    }

    FormatToStream(stdout,inf ? MSG_UPDATE_INF : MSG_UPDATE,hwid,inf);
    flags |= INSTALLFLAG_FORCE;
    if(!UpdateFn(NULL,hwid,inf,flags,&reboot)) {
        MSG("");
        DWORD err = GetLastError();
        if (err == ERROR_FILE_NOT_FOUND) {
            puts("针对 FullInfPath 指定的路径不存在。");
        }
        if (err == ERROR_IN_WOW64) {
            puts("呼叫的应用程序是在 64 位环境中尝试执行的 32 位应用程序,不允许此环境。");
        }
        if (err == ERROR_INVALID_FLAGS) {
            puts("为 InstallFlags 指定的值无效。");
        }
        if (err == ERROR_NO_SUCH_DEVINST) {
            puts("针对 HardwareId 指定的值不符合系统上的任何设备。 也就是说,设备未插入。");
        }
        if (err == ERROR_NO_MORE_ITEMS) {
            puts("函式发现HardwareId值的相符项目,但指定的驱动程序与目前的驱动程序不相符,而且呼叫端未指定INSTALLFLAG_FORCE旗标。");
        }

        goto final;
    }

    FormatToStream(stdout,MSG_UPDATE_OK);

里面那些if (err == ERROR_...),是从微软官方文档中找的

无法安装——从日志定位

windows驱动日志输出的路径是:C:\Windows\inf\setupapi.dev.log

找到相关信息:

>>>  [Device Install (UpdateDriverForPlugAndPlayDevices) - Root\SimpleAudioSample]
>>>  Section start 2024/10/25 08:50:47.888
      cmd: "C:\Program Files (x86)\Windows Kits\10\Tools\10.0.26100.0\x64\devcon.exe" install .\SimpleAudioSample.inf Root\SimpleAudioSample
     ndv: INF path: C:\Users\Administrator\Desktop\Windows-driver-samples\audio\simpleaudiosample\x64\Debug\package\SimpleAudioSample.inf
     ndv: Install flags: 0x00000001
     ndv: {Update Device Driver - ROOT\MEDIA\0000}
     ndv:      Search options: 0x00000080
     ndv:      Searching single INF 'C:\Users\Administrator\Desktop\Windows-driver-samples\audio\simpleaudiosample\x64\Debug\package\SimpleAudioSample.inf'
     dvi:      {Build Driver List} 08:50:47.910
     dvi:           Searching for hardware ID(s):
     dvi:                root\simpleaudiosample
     dvi:      {Build Driver List - exit(0x00000000)} 08:50:47.916
!    ndv:      No matching drivers found in single INF
     dvi:      {DIF_SELECTBESTCOMPATDRV} 08:50:47.917
     dvi:           Default installer: Enter 08:50:47.918
     dvi:                {Select Best Driver}
!    dvi:                     Selecting driver failed(0xe0000228)
     dvi:                {Select Best Driver - exit(0xe0000228)}
!    dvi:           Default installer: failed
!    dvi:           Error 0xe0000228: There are no compatible drivers for this device.
     dvi:      {DIF_SELECTBESTCOMPATDRV - exit(0xe0000228)} 08:50:47.922
!    ndv:      Unable to select best compatible driver. Error = 0xe0000228
     ndv:      No drivers found for device.
     ndv: {Update Device Driver - exit(00000103)}
!    ndv: No better matching drivers found for device 'ROOT\MEDIA\0000'.
!    ndv: No devices were updated.
<<<  Section end 2024/10/25 08:50:47.925
<<<  [Exit status: FAILURE(0x00000103)]

No matching drivers found in single INF。缺少驱动?是文件没找到吗?删除驱动的.sys和.cer等文件试试,结果是一样的。

安装成功——修改inf文件

我并没有找到指定.sys等文件的方法,找半天都没有找到,再加上其他inf文件也是相对路径,推测不是这个原因。后面忽然想到devcon.exe输出“函式发现HardwareId值的相符项目,但指定的驱动程序与目前的驱动程序不相符,而且呼叫端未指定INSTALLFLAG_FORCE旗标”,推测可能是版本不对。删掉SIMPLEAUDIOSAMPLE,NTamd64.10.0...22000中的.10.0...22000,居然可以安装成功了……

标签:dvi,err,微软,SimpleAudioSample,50,例子,inf,ndv
From: https://www.cnblogs.com/Afeather/p/18501755

相关文章

  • 微软推出Phi-4生成式AI模型 改进数学能力与训练数据质量
    微软宣布,其Phi系列生成式AI模型迎来了新成员——Phi-4。与之前的版本相比,Phi-4在多个方面有所改进,尤其在数学问题的解决能力上表现突出,这得益于训练数据质量的提升。截至周四晚上,Phi-4的访问权限相对有限,仅在微软最新推出的AzureAIFoundry开发平台上可用,且仅限于微软研究......
  • RedisShake同步例子(过滤同步)
    环境:OS:Centos7RedisShake:v4.2.2 1.下载地址https://github.com/tair-opensource/RedisShake/releases/download/v4.2.2/redis-shake-linux-amd64.tar.gz 2.解压安装mkdir-p/opt/redis-shake##安装包上传到该目录tar-xvfredis-shake-linux-amd64.tar.gz 3.修......
  • 关系数据库场景建模例子(by GPT)
    场景一个买卖应用,商品A/B/C,商品价格,运营活动,普通优惠券,活动特别优惠券,有效期等等。请根据这种场景,设计一个典型的数据库表设计。设计商品(products)是核心,活动(campaigns)和优惠券(coupons)都可以作用于商品。通过活动商品关联表(campaign_products)和活动特别优惠券......
  • 关于内联函数(实际使用的例子)
    C++内联函数(inlinefunction)是指在编译时将函数调用直接替换为函数体的代码,从而避免函数调用的开销。1.它通常用于短小的函数,以提高程序的执行效率。2.内联函数通过在函数声明前加上inline关键字来定义。3.使用内联函数可以减少函数调用的栈操作,但过度使用可能增加代码体......
  • 微软中文输入法带来的一点小坑,导致arcgispro输入中文异常
    有同事反映,在Pro中新建要素类时,没办法设定名称为“新建”,会自己变成不完整的拼音。查看了一下,确有此事。在相同的界面里还有其他输入框,却没有这种情况。研究了一下,发现是输入法引发的连锁问题。有问题的输入框,是加了数据验证的。因为pro中创建要素类时,不允许名称中带特殊字符,......
  • INFGate 是一个强大的命令行工具,主要用于验证和分析 INF 文件,确保其符合微软的规范要
    INFGate版权所有(c)MicrosoftCorporation。保留所有权利。版本:2.0用法: INFGate<文件列表>[/L<日志文件>][/B][/DC<选项>][/DO][/LogoLevel<Basic|Premium>]<文件列表> =文件名|通配符列表|目录名/L<日志文件> =写入名为 <日志文件> 的日志文件/O......
  • Ajax异步刷新功能及简单案例例子解析
    代码示例:Ajax异步刷新功能允许网页在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。这种技术可以显著提升用户体验和页面性能。以下是Ajax异步刷新功能的一个简单案例:原生JS实现Ajax异步刷新创建XMLHttpRequest对象:varxhr=newXMLHttpRequest();......
  • Ajax实现异步加载数据例子解析
    代码示例:Ajax(AsynchronousJavaScriptandXML)是一种在无需重新加载整个页面的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。下面我将提供一个详细的Ajax实现异步加载数据的例子。1.HTML部分首先,我们需要一个简单的H......
  • 在 Windows 11 中,WMIC(Windows Management Instrumentation Command-line)工具已被废弃,
    在Windows11中,WMIC(WindowsManagementInstrumentationCommand-line)工具已被废弃,微软推荐使用PowerShell中的Get-WmiObject和Get-CimInstance等cmdlet来替代其功能。不过,WMIC被停用可能会对一些管理和自动化任务造成影响,尤其是在一些自动化脚本或企业环境中,管理员习......
  • 微软CICD有眼有手就可以部署
    微软的CICD1.完成CICD的组件叫做AzureDevops官方的链接:https://dev.azure.com/AzureDevops我们用的是微软的-云平台不需要部署到本地部署到云上就可以了第二种方式CICD大多数企业不是微软系的常用这个AzureDevopsjinkes本期用的是第一种,微软的(1)第一步创建新的......