打印

链表值传递问题

[复制链接]
1037|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hsbjb|  楼主 | 2012-6-7 17:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了一个动态链接库,在动态链接库中利用链表保存了从设备管理器里查询到的USB设备类的名称,但是在调用该动态链接库的时候总是得不到结果。动态链接库中的代码和调用程序的代码如下:
dll:
DEVICE_API int Devicefind(struct DeviceName *head)
{

HDEVINFO hDevInfo;
SP_DEVINFO_DATA DeviceInfoData;
DWORD i;
GUID classGuid=GUID_DEVCLASS_USB;//USB类的guid
//获取系统硬件设备集
//hDevInfo=SetupDiGetClassDevs(NULL,0,0,DIGCF_PRESENT|DIGCF_ALLCLASSES);//获取系统当前所有硬件设备集
hDevInfo=SetupDiGetClassDevs((LPGUID)&classGuid,0,0,DIGCF_PRESENT);//获取所有USB设备
if (hDevInfo==INVALID_HANDLE_VALUE)
{
MessageBox(NULL,_T("获取设备失败!"),_T("1"),0);
SetupDiDestroyDeviceInfoList(hDevInfo);
return 0;
}

//枚举所有硬件设备
DeviceInfoData.cbSize=sizeof(SP_DEVINFO_DATA);
for (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);i++)
{
DWORD DataT;
LPTSTR buffer=NULL;
DWORD buffersize=0;
/*************************获取单个设备详细信息********************************/
while (!SetupDiGetDeviceRegistryProperty(hDevInfo,&DeviceInfoData,SPDRP_DEVICEDESC,&DataT,(PBYTE)buffer,buffersize,&buffersize))
{
if (GetLastError()==ERROR_INSUFFICIENT_BUFFER)
{
//改变缓冲区大小
if (buffer)
LocalFree(buffer);
buffer=(char*)LocalAlloc(LPTR,buffersize);
}
}
struct DeviceName *mbuffer1,*mbuffer2;
mbuffer1=(struct DeviceName*)malloc(sizeof(struct DeviceName));
mbuffer1->name=buffer;//将数据存入链表中
mbuffer1->next=NULL;
if (head==NULL)
head=mbuffer1;
mbuffer2=(struct DeviceName*)malloc(sizeof(struct DeviceName));
mbuffer2->next=mbuffer1;
mbuffer2=mbuffer1;//将mbuffer1的值赋给mbuffer2

if (buffer)
{
LocalFree(buffer);
}
}
SetupDiDestroyDeviceInfoList(hDevInfo);//清理
return 1;

}

调用函数代码:
void CProp1::OnBnClickedBtngetdev()
{
// TODO: 在此添加控件通知处理程序代码


struct DeviceName *pbuffer=NULL;
int result;
result=Devicefind(pbuffer);
if (1==result)
{
MessageBox(_T("获取设备信息成功!"));


}
else
MessageBox(_T("获取设备信息失败!"));

单步调试在dll的cpp文件中,头指针能够得到设备的名称,在调用该dll的函数中得到的结果却为空

相关帖子

沙发
pkat| | 2012-6-7 20:57 | 只看该作者
head=mbuffer1;

想要改变参数的值,传参数的地址

使用特权

评论回复
板凳
无冕之王| | 2012-6-7 21:12 | 只看该作者
需要共享内存段?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

193

主题

2354

帖子

0

粉丝