smalldou
驱动牛犊
驱动牛犊
  • 注册日期2004-05-14
  • 最后登录2005-04-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2014回复:5

为什么win98上SetupDiCreateDeviceInfo执行后会报错呀???

楼主#
更多 发布于:2004-05-21 14:18
我在做98上的modem自动安装程序,代码如下,在执行到SetupDiCreateDeviceInfo()函数时会报0x000000d错误,同样的代码在win2k上执行就没有问题,请问谁知道这是怎么回事呀??


int InstallRootEnumeratedDriver(IN LPGUID lpGUID,
IN LPCTSTR lpszHardwareID ,
IN LPCTSTR lpszDescription,
IN LPCTSTR lpszInfName OPTIONAL,
OUT LPTSTR lpszInstanceID OPTIONAL,
OUT LPBOOL pfNeedReboot OPTIONAL,
IN LPCTSTR lpszComName
)
{
int ret = ERROR_SUCCESS;
DWORD dwEnumIndex;
char szClassName[100];

HDEVINFO hdi = NULL;
SP_DEVINFO_DATA hDev;
SP_DEVINSTALL_PARAMS hInstParam = { 0 } ;
SP_DRVINFO_DATA hDrv = { 0 } ;
hDev.cbSize = sizeof(SP_DEVINFO_DATA);
hInstParam.cbSize = sizeof(SP_DEVINSTALL_PARAMS);
hDrv.cbSize = sizeof(SP_DRVINFO_DATA);

memset(&hDev,0,sizeof(hDev));
//try
//{
//检测设备是否已经安装
if(FindExistingDevice(lpGUID , lpszHardwareID , lpszInstanceID))
return ERROR_SUCCESS;

if(!SetupDiClassNameFromGuid(lpGUID , szClassName , sizeof(szClassName) ,NULL))
printf(\"1111111111\\n\");

if((hdi = SetupDiCreateDeviceInfoList(lpGUID , NULL))==NULL)
printf(\"222222222222\\n\");

//创建新设备信息。如果设备已经存在,有异常产生
//tong if(!SetupDiCreateDeviceInfo(hdi , szClassName, lpGUID , lpszDescription, NULL , DICD_GENERATE_ID , &hDev))
hDev.cbSize = sizeof(SP_DEVINFO_DATA);
if(!SetupDiCreateDeviceInfo(hdi,(const char *)szClassName,lpGUID,NULL,NULL,DICD_GENERATE_ID,&hDev))
{
printf(\"33333333333333\\n\");
ret = GetLastError ();
}

if(!SetupDiGetDeviceInstanceId(hdi , &hDev ,lpszInstanceID , MAX_PATH , NULL))
{
printf(\"444444444444444\\n\");
ret = GetLastError ();
}
。。。。。。。
smalldou
驱动牛犊
驱动牛犊
  • 注册日期2004-05-14
  • 最后登录2005-04-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-21 16:59
等待恢复呀!!!!!!
另外,在win98上执行的时候,到SetupDiCreateDeviceInfo(hdi , szClassName, lpGUID , lpszDescription, NULL , DICD_GENERATE_ID , &hDev)
一句报错,错误号为:0x0000000d,看了帮助说这是“数据错误”,我的hdi是前面函数得到的句柄,szClassName是“Modem”,lpGUID 是GUID const CLASS_GUID = {0x4D36E96DL, 0xe325, 0x11ce, {0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18}};
符值过来的,hDev是SP_DEVINFO_DATA结构,初始化为0的。。。。实在是看不出来哪里错了呀:(
请各位给支个招行不??
谢谢了
koklite
驱动牛犊
驱动牛犊
  • 注册日期2004-05-15
  • 最后登录2007-11-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-22 01:19
找了n久 没有人回答过这个问题
yumen
smalldou
驱动牛犊
驱动牛犊
  • 注册日期2004-05-14
  • 最后登录2005-04-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-22 09:39
界个界个。。。。。。哎。。。。。。
这个网站真的好像没有人回答win98上的问题。。。win98就这么遭人冷落的么???
dos_119
驱动牛犊
驱动牛犊
  • 注册日期2004-02-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-25 18:15
我现在也在研究这方面的问题。
smalldou
驱动牛犊
驱动牛犊
  • 注册日期2004-05-14
  • 最后登录2005-04-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-25 18:31
噢?太好了,我刚看了你发的帖子,你说“我的驱动程序在win98下正常,在win2000下有感叹号”。。。我和你正好相反,我的win2000下没问题,win98下就是运行SetupDiCreateDeviceInfo()报错,我们能不能互通有无呀:)
游客

返回顶部