我有很多使用libusb、libudev和SetupAPI编写CfgMgr32驱动程序的经验,但我完全不清楚CfgMgr32在SetupAPI上为Windows应用程序提供了什么。微软概述了如何从SetupAPI移植到CfgMgr32,但是,我并不真正理解两者之间的权衡,也不明白是否有问题。
具体来说,我工作的大部分时间都涉及到与具有等时端点的定制设备、具有批量端点的设备和HID设备进行通信。有什么明确的理由去做这样或那样的事情吗?
发布于 2022-10-23 17:38:36
一个原因是在微软页面的顶部描述如何从SetupApi移植到CfgMgr32,在这里可以找到https://learn.microsoft.com/en-us/windows-hardware/drivers/install/porting-from-setupapi-to-cfgmgr32。
用黑体字摘录与相关部分:
本主题提供的代码示例演示如何将使用Setupapi.dll功能的代码移植到使用Cfgmgr32.dll。通过移植代码,可以在不支持SetupApi的通用Windows平台(UWP)上运行代码。CfgMgr32的子集在上得到支持,特别是通过API双赢设备-配置-L1-1-0.dll API集(Windows8及更高版本)或API win-设备-配置-L1-1.dll API集(Windows8.1及更高版本)公开的功能。在Windows 10及更高版本中,只需链接到onecore.lib。
另一个原因是,CfgMgr API为操作提供了特定的返回状态代码,而SetupApi返回一个值以表示成功/错误,但需要对GetLastError
进行进一步调用,以获得上一次操作的特定错误代码。
https://stackoverflow.com/questions/73707402
复制相似问题