您的位置:程序门 -> vc/mfc -> 网络编程



关于getadapterindex()的问题!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于getadapterindex()的问题![已结贴,结贴人:dgsd33]
发表于:2007-01-24 11:28:18 楼主
iphelper的getadapterindex()函数需要一个参数(adapter的name)才能得到它的index;

adapter的name是通过getadaptersinfo()来得到的;

现在name     已经得到了,是用一个cstring类型的变量来接收的;

内容是这种格式:{52234678-c691-46f7-9c23-1ef34328f188};

但是现在的问题是getadapterindex()里面需要的参数(name)类型是lpwstr;

我将   cstring   转成   wchar   就会造成内容的丢失,导致使用getadapterindex()的时候返回值是55     (指定的网络资源或设备不再可用。);

怎么样才能使getadapterindex完整的得到name的内容?

 
发表于:2007-01-24 11:33:071楼 得分:0
如果确实是字符串的问题,   可以用multibytetowidthchar(...)将lpstr转换为lpwstr
发表于:2007-01-24 11:33:452楼 得分:0
写错了,   应该是multibytetowidechar
发表于:2007-01-24 11:47:323楼 得分:0
我用multibytetowidechar()试过了,返回值仍然是55
发表于:2007-01-24 11:52:524楼 得分:0
那就可能是别的问题了,   不是字符串的问题.
发表于:2007-01-24 12:39:405楼 得分:0
那会是什么问题呢........
发表于:2007-01-24 12:50:106楼 得分:0
不知道,   要贴出相关代码才好分析.

另:   和你相同的问题:   http://topic.csdn.net/t/20041221/23/3665272.html

发表于:2007-01-24 13:09:397楼 得分:0
#include   "iphlpapi.h "
pip_adapter_info   padainfo=null;
unsigned   long   poutbufada=0;
...
...
unsigned   long   rcode_ada;
...
rcode_ada=getadaptersinfo(padainfo,&poutbufada);

cstring   name=_t( " ");
name=padainfo-> adaptername;
...
...
unsigned   long   rcode;
unsigned   long   index;
rcode=getadapterindex(a2w(name),&index);
...


------------------------------
rcode返回55
发表于:2007-01-24 13:16:318楼 得分:0
补充:
 uses_conversion;
 rcode=getadapterindex(a2w(name),&index);
发表于:2007-01-24 14:06:599楼 得分:0

lpwstr   name1=name.getbuffer(name.getlength());
rcode=getadapterindex(name1,&index);
发表于:2007-01-24 14:17:5410楼 得分:0
楼上的兄弟写错了吧,

name.getbuffer(name.getlength())的值只能赋给char*类型的变量
发表于:2007-01-24 14:27:0711楼 得分:40
兄弟阿,你要是还用vc++6,的mfc,建议赶快升级
发表于:2007-01-24 15:56:5112楼 得分:0
hewpkanxue()   (   )   信誉:100         blog     2007-1-24   14:27:07     得分:   0        
兄弟阿,你要是还用vc++6,的mfc,建议赶快升级

用vs.net?
or
vc++7?

   
 
发表于:2007-01-24 15:57:4413楼 得分:0
这跟工具的版本有关系吗?
发表于:2007-01-24 17:23:3114楼 得分:0
不知道,我只知道
lpwstr   name1=name.getbuffer(name.getlength());
在我电脑上正确执行了,得到了正确的字符串     vs2005
发表于:2007-01-24 18:20:3015楼 得分:0
你如果不能正确执行上面的语句   请设置
项目——项目属性---常规----字符集-----use   unicode   char   set

发表于:2007-01-25 00:05:3216楼 得分:40
{52234678-c691-46f7-9c23-1ef34328f188}估计这个不能作为adaptername传入getadapterindex(),   但getadaptersinfo也能返回index,   如下:

#include   "stdio.h "
#include   "windows.h "
#include   "iphlpapi.h "

int   main(void)
{
        ip_adapter_info   iai[10]   =   {   0   };
        ulong   cchbuflen   =   sizeof(   iai   );

        if(   getadaptersinfo(iai,   &cchbuflen)   ==   no_error   )
        {
                pip_adapter_info   pipai   =   iai;

                do
                {
                          printf( "adapter   name:   %s\n ",   pipai-> adaptername);
                          printf( "description:   %s\n ",   pipai-> description);
                          printf( "adapter   index:   %d\n\n ",   pipai-> index);       //   这个index可以吧

                          pipai   =   pipai-> next;
                }while(   pipai   !=   null   );
        }

        return   0;
}

发表于:2007-01-25 11:07:4417楼 得分:0
...一语惊醒梦中人-_________- ' '

没注意getadaptersinfo里也有...都不用转换了。

准备结帖
发表于:2007-01-25 21:45:0818楼 得分:0
无论用不用,方法还可以是原来是这样的
    cstring   name=_t( "13445656 ");
    wchat_t   wname[20];
    lpwstr=lstrcpy(wname,name);


快速检索

最新资讯
热门点击