论坛: 编程破解 标题: 关于NetBIOS编程的问题 复制本贴地址    
作者: ejdm [ejdm]    论坛用户   登录
我在学习NetBIOS网络编程,我想求出本机器共有多少LANA编号,尝试编写了以下程序段。可总是不能成功,具体情况如下:

#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
#include<nb30.h>
#pragma comment(lib,"Netapi32") 

main()
{
    NCB  ncb;
    LANA_ENUM *lenum;
    
    ZeroMemory(&ncb,sizeof(NCB));
    ncb.ncb_command=NCBENUM;
    ncb.ncb_buffer=(PUCHAR)lenum;
    ncb.ncb_length=sizeof(LANA_ENUM);
    if (Netbios(&ncb)!=NRC_GOODRET)
    {
            printf("ERROR:Netbios:NCBENUM:%d\n",ncb.ncb_retcode);
    }
    printf("LANA:%d\n",(*lenum).length);
}


NetBIOS调用一直不成功啊,这是为什么啊?
ZeroMemory(&ncb,sizeof(NCB));
ncb.ncb_buffer=(PUCHAR)lenum;
这二句什么意思啊,我是从书上抄来的,不是很了解其含义,麻烦各位解释一下,谢谢了! 

地主 发表时间: 07/02 10:54

回复: 286 [unique]   版主   登录
你原来的程序只有指针,没有实际缓冲区地址,所以出错。改为:
NCB  ncb;
LANA_ENUM lenum;
    
ZeroMemory(&ncb,sizeof(NCB));
ncb.ncb_command=NCBENUM;
ncb.ncb_buffer=(PUCHAR)&lenum;
lenum.length=5;
ncb.ncb_length=sizeof(lenum);

/////////////////////////////////
ZeroMemory(&ncb,sizeof(NCB));
表示把由ncb开始的,长度为sizeof(NCB)的内存清为0.
ncb.ncb_buffer=(PUCHAR)&lenum;
表示NCB的缓冲区指向lenum的地址。

NETBIOS编程之前要先初始化。




B1层 发表时间: 07/02 13:05

回复: ejdm [ejdm]   论坛用户   登录
谢谢286,你说的是对的,程序我已经通过了,以后有不懂的,我还会向你请教的,希望你还能继续帮我哦。谢谢了。

B2层 发表时间: 07/02 15:00

回复: 286 [unique]   版主   登录
不用客气,大家讨论而已。

B3层 发表时间: 07/02 15:25

回复: ccstudy [ccstudy]   论坛用户   登录
哪有NetBIOS下载的地址?

B4层 发表时间: 07/26 20:43

回复: 286 [unique]   版主   登录
下载什么?
教程?例程?协议?

B5层 发表时间: 07/28 09:33

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号