Claye
驱动牛犊
驱动牛犊
  • 注册日期2002-11-24
  • 最后登录2007-10-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1012回复:1

请教一个调试出现的问题,分数大放送!

楼主#
更多 发布于:2003-03-13 19:38
我写一个打开设备的句柄时,编译一直不能通过,出错如下:Wdm1Test.cpp
Linking...
Wdm1Test.obj : error LNK2001: unresolved external symbol __imp__SetupDiGetDeviceInterfaceDetailA@24
Wdm1Test.obj : error LNK2001: unresolved external symbol __imp__SetupDiDestroyDeviceInfoList@4
Wdm1Test.obj : error LNK2001: unresolved external symbol __imp__SetupDiEnumDeviceInterfaces@20
Wdm1Test.obj : error LNK2001: unresolved external symbol __imp__SetupDiGetClassDevsA@16
Debug/Wdm1Test.exe : fatal error LNK1120: 4 unresolved externals
Error executing link.exe.

Wdm1Test.exe - 5 error(s), 0 warning(s)

布置是什么原因。
原代码如下:
HANDLE GetDeviceViaInterface( GUID* pGuid, DWORD instance)
{
// Get handle to relevant device information set
HDEVINFO info = SetupDiGetClassDevs(pGuid,NULL,NULL,DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);
if(info==INVALID_HANDLE_VALUE)
{
printf(\"No HDEVINFO available for this GUID\\n\");
return NULL;
}

// Get interface data for the requested instance
SP_DEVICE_INTERFACE_DATA ifdata;
ifdata.cbSize = sizeof(ifdata);
if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, instance, &ifdata))
{
printf(\"No SP_DEVICE_INTERFACE_DATA available for this GUID instance\\n\");
SetupDiDestroyDeviceInfoList(info);
return NULL;
}

// Get size of symbolic link name
DWORD ReqLen;
SetupDiGetDeviceInterfaceDetail(info,&ifdata,NULL,0,&ReqLen,NULL);
PSP_DEVICE_INTERFACE_DETAIL_DATA ifDetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA)(new char[ReqLen]);
if( ifDetail==NULL)
{
SetupDiDestroyDeviceInfoList(info);
return NULL;
}

// Get symbolic link name
ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL))
{
SetupDiDestroyDeviceInfoList(info);
delete ifDetail;
return NULL;
}

printf(\"Symbolic link is %s\\n\",ifDetail->DevicePath);
// Open file
HANDLE rv = CreateFile( ifDetail->DevicePath,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if( rv==INVALID_HANDLE_VALUE) rv = NULL;

delete ifDetail;
SetupDiDestroyDeviceInfoList(info);
return rv;
}

/////////////////////////////////////////////////////////////////////////////

因为有了你的驱动,我们才能进步! 愿中国强大!!!!
Claye
驱动牛犊
驱动牛犊
  • 注册日期2002-11-24
  • 最后登录2007-10-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-13 19:50
解决了,呵呵
因为有了你的驱动,我们才能进步! 愿中国强大!!!!
游客

返回顶部