VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 671|回复: 0

[求助] 求助,NCB结构初始化失败,成员变量ncb_lana_num没有指定有效的网络编号

[复制链接]
06_avatar_middle
在线会员 发表于 2016-5-16 14:24:39 | 显示全部楼层 |阅读模式
3驿站币

  1. #include <Windows.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <nb30.h>
  5. #include <tchar.h>
  6. #pragma comment(lib,"netapi32.lib")

  7. #define LANANUM 0
  8. #define LOCALNAME "UNIQUENAME"
  9. #define NBCheck(x) if(NRC_GOODRET != x.ncb_retcode){\
  10. printf("Line %d:Got 0x%x from NetBios()\n", \
  11. __LINE__, x.ncb_retcode);\
  12. }



  13. BOOL NBReset(int nLana, int nSessions, int nNames) {
  14.         NCB ncb;

  15.         // 初始化ncb结构体
  16.         memset(&ncb, 0, sizeof(ncb));
  17.         ncb.ncb_command = NCBRESET;
  18.         ncb.ncb_lsn = 0;
  19.         ncb.ncb_lana_num = nLana;
  20.         ncb.ncb_callname[0] = nSessions;
  21.         ncb.ncb_callname[2] = nNames;
  22.         Netbios(&ncb);
  23.         NBCheck(ncb);                        // 就在这里出了错,应该是检查到ncb_lana_num这个成员不正确,但是为什么呢,

  24.         return (NRC_GOODRET == ncb.ncb_retcode);
  25. }

  26. void MakeNetbiosName(char *achDest, LPCSTR szSrc) {
  27.         int cchSrc;
  28.         cchSrc = lstrlen(szSrc);
  29.         if (cchSrc > NCBNAMSZ)
  30.                 cchSrc = NCBNAMSZ;
  31.         memset(achDest, ' ', NCBNAMSZ);
  32.         memcpy(achDest, szSrc, cchSrc);
  33. }

  34. BOOL NBAddName(int nLana, LPCSTR szName) {
  35.         NCB ncb;
  36.         memset(&ncb, 0, sizeof(ncb));
  37.         ncb.ncb_command = NCBADDNAME;
  38.         ncb.ncb_lana_num = nLana;
  39.         MakeNetbiosName((char *)ncb.ncb_name, szName);
  40.         Netbios(&ncb);
  41.         NBCheck(ncb);

  42.         return (NRC_GOODRET == ncb.ncb_retcode);
  43. }

  44. BOOL NBAdapterStatus(int nLana, PVOID pBuffer, int cbBuffer, LPCSTR szName) {
  45.         NCB ncb;
  46.         memset(&ncb, 0, sizeof(ncb));
  47.         ncb.ncb_command = NCBASTAT;
  48.         ncb.ncb_lana_num = nLana;
  49.         ncb.ncb_buffer = (PUCHAR)pBuffer;
  50.         ncb.ncb_length = cbBuffer;

  51.         MakeNetbiosName((char *)ncb.ncb_callname, szName);
  52.         Netbios(&ncb);
  53.         NBCheck(ncb);
  54.         return (NRC_GOODRET == ncb.ncb_retcode);
  55. }

  56. BOOL NBListNames(int nLana, LPCSTR szName) {
  57.         int cbBuffer;
  58.         ADAPTER_STATUS *pStatus;
  59.         NAME_BUFFER *pNames;
  60.         HANDLE hHeap;
  61.         hHeap = GetProcessHeap();

  62.         cbBuffer = sizeof(ADAPTER_STATUS) + 255 * sizeof(NAME_BUFFER);
  63.         pStatus = (ADAPTER_STATUS *)HeapAlloc(hHeap, 0, cbBuffer);
  64.         if (NULL == pStatus)
  65.                 return FALSE;
  66.         if (!NBAdapterStatus(nLana, (PVOID)pStatus, cbBuffer, szName)) {
  67.                 HeapFree(hHeap, 0, pStatus);
  68.                 return FALSE;
  69.         }
  70.         pNames = (NAME_BUFFER *)(pStatus + 1);
  71.         for (int i = 0;i < pStatus->name_count;i++)
  72.                 printf("\t%.*s\n", NCBNAMSZ, pNames[i].name);
  73.         HeapFree(hHeap, 0, pStatus);

  74.         return TRUE;
  75. }

  76. int _tmain(int argc, _TCHAR* argv[]) {
  77.         if (!NBReset(LANANUM, 20, 30)) {
  78.                 printf("操作失败1");
  79.                 system("pause");
  80.                 return -1;
  81.         }
  82.         if (!NBAddName(LANANUM, LOCALNAME)) {
  83.                 printf("操作失败2");
  84.                 system("pause");
  85.                 return -1;
  86.         }

  87.         if (!NBListNames(LANANUM, LOCALNAME)) {
  88.                 printf("操作失败3");
  89.                 system("pause");
  90.                 return -1;
  91.         }
  92.         printf("Succeeded.\n");
  93.         system("pause");

  94.         return 0;
  95. }
复制代码


代码是我照着书上敲的,有的printf是我自己写的以判断出错位置的,
应该是成员ncb_lana_num不正确,ncb_retcode成员变量的值是23,书上意思是成员变量ncb_lana_num没有指定有效的网络编号,但是有效的网络编号指的是什么呢





上一篇:列表控件中的LVS_EX_LABELTIP风格怎么用?
下一篇:动态创建的控件无法显示在列表上
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-4-19 11:24

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表