阅读:10193回复:4
应用程序中使用SetupDiGetInterfaceDeviceDetail的问题
我在写USB通信的应用程序时,使用了SetupDiGetClassDevs,SetupDiEnumDeviceInterfaces和SetupDiGetInterfaceDeviceDetail用来得到设备的路径名。
现在是在SetupDiGetInterfaceDeviceDetail一步会失败,返回的错误代码为1784(ERROR_INVALID_USER_BUFFER),这是为什么呢,有经验的给指点一下吧。 和inf文件有关系吗? |
|
最新喜欢:![]() |
沙发#
发布于:2003-12-12 21:06
SetupDiGetInterfaceDeviceDetail要使用两次,第一次得到requiredlength
SetupDiGetDeviceInterfaceDetail(hDevInfo, &DevInterfaceData, NULL, 0, &requiredLength, NULL); 第二次得到的才是真正要用的东西 SetupDiGetDeviceInterfaceDetail(hDevInfo, &DevInterfaceData, detailData, requiredLength,NULL, NULL) |
|
板凳#
发布于:2003-12-23 15:22
1、应用程序对USB驱动程序的访问
在Windows中,Win32应用程序调用WDM的Win32函数有五个:CreateFile(),ReadFile(),WriteFile(),DeviceIocontrol(),CloseHandle()。 (1)打开一个WDM设备 应用程序打开一个WDM设备驱动程序,用的是CreateFile()函数,它的第一个参数不是一个WDM文件名,而是一个符号链接名。符号链接名的获得需要调用SetupDiGetClassDevs,SetupDiEnumDeviceInterfaces,SetupDiGetDeviceInterfaceDetail三个函数。SetupDiGetClassDevs打开指定GUID的设备的\"设备信息集\",SetupDiEnumDeviceInterfaces取出感兴趣的设备实例的信息,SetupDiGetDeviceInterfaceDetail获得实例的符号链接名。最后调用CreateFile()函数获得设备的句柄,这样它就能够调用Win32函数,这将产生对应于此设备对象的IRP。 :cool: |
|
|
地板#
发布于:2005-03-12 10:01
我是在第二次调用时出现这种错误,提示“提供给请求操作的用户缓冲区无效”,第一次调用已经应该已经得到了RequiredSize,请高手救命啊。
|
|
地下室#
发布于:2005-05-12 10:03
刚开始找USB设备时是与inf文件无关的
给我所有的分,我可以给你源程序。。。 E-Mail:wangkai1314_2000@163.com |
|