NCB

【勇芳软件工作室】汉化HomePreviousNext

NCB结构描述了网络控制块。指向此结构的指针传递给Netbios的函数。

typedef struct _NCB { // NCB

UCHAR ncb_command;

UCHAR ncb_retcode;

UCHAR ncb_lsn;

UCHAR ncb_num;

PUCHAR ncb_buffer;

WORD ncb_length;

UCHAR ncb_callname[NCBNAMSZ];

UCHAR ncb_name[NCBNAMSZ];

UCHAR ncb_rto;

UCHAR ncb_sto;

void (*ncb_post) (struct _NCB *);

UCHAR ncb_lana_num;

UCHAR ncb_cmd_cplt;

UCHAR ncb_reserve[10];

HANDLE ncb_event;

} NCB;

会员

ncb_command

指定命令代码和指示NCB结构是否异步处理的标志。最高有效位包含该标志。如果ASYNCH常数与命令代码组合(通过使用OR运算符),NCB结构将被异步处理。支持以下命令代码:

含义
NCBACTION启用传输接口的扩展。NCBACTION命令映射到TdiAction。当指定此代码时,//监控信息。结构水平成员指向要填充ACTION_HEADER结构的缓冲区,该结构可选地后跟数据。使用NCBCANCEL不能取消NCBACTION命令。
NCBADDGRNAME将组名添加到本地名称表。
NCBADDNAME在本地名称表中添加唯一的名称。
NCBASTAT检索适配器的状态。当指定此代码时,//监控信息。结构水平成员指向要填充ADAPTER_STATUS结构的缓冲区,后跟数组NAME_BUFFER结构。
NCBCALL打开另一个名字的会话。
NCBCANCEL取消上一个命令。
NCBCHAINSEND将两个数据缓冲区的内容发送到指定的会话伙伴。
NCBCHAINSENDNA将两个数据缓冲区的内容发送到指定的会话伙伴,并且不等待确认。
NCBDELNAME从本地名称表中删除名称。
NCBDGRECV从任何名称接收数据报。
NCBDGRECVBC从任何主机接收广播数据报。
NCBDGSEND将数据报发送到指定的名称。
NCBDGSENDBC向局域网(LAN)上的每个主机发送广播数据报。
NCBENUM枚举LAN适配器(LANA)号码。当指定此代码时,//监控信息。结构水平成员指向要填充LANA_ENUM结构的缓冲区。
NCBFINDNAME确定网络上名称的位置。当指定此代码时,//监控信息。结构水平成员指向要填充FIND_NAME_HEADER结构的缓冲区,后跟一个或多个FIND_NAME_BUFFER结构。
NCBHANGUP关闭指定的会话。
NCBLANSTALERT通知用户LAN持续超过一分钟的故障。
NCBLISTEN使用另一个名称打开会话。
NCBRECV从指定的会话伙伴接收数据。
NCBRECVANY从与指定名称相对应的任何会话接收数据。
NCBRESET重置LAN适配器。在ncb_lana_num成员中指定相同号码的任何其他NCB命令将被接受之前,必须重置适配器。
 在IBM的NetBIOS 3.0规范的文档数NCB_RESET NCB的。Win32使用动态链接例程界面实现NCB.RESET。特定值可以在NCB的特定字节中传递,更具体地说:
 *如果ncb_lsn不是0x00,与ncb_lana_num关联的所有资源都将被释放。
 *如果ncb_lsn为0x00,则与ncb_lana_num相关联的所有资源都将被释放,并将分配新的资源。ncb_callname [0]字节指定最大会话数,ncb_callname [2]字节指定最大名称数。ncb_callname [3]字节的非零值请求应用程序使用NAME_NUMBER_1。
NCBSEND将数据发送到指定的会话伙伴。
NCBSENDNA将数据发送到指定的会话伙伴,并且不等待确认。
NCBSSTAT检索会话的状态。当指定此值时,//监控信息。结构水平成员指向要填充SESSION_HEADER结构的缓冲区,后跟一个或多个SESSION_BUFFER结构。
NCBTRACE激活或禁用NCB跟踪。en在系统中支持此命令是可选的和特定于系统的。
NCBUNLINK取消链接适配器。

ncb_retcode

指定返回码。异步操作正在进行时,此值设置为NRC_PENDING。可以指定以下返回码值之一:

含义
NRC_GOODRET操作成功。
NRC_BUFLEN提供非法缓冲区长度。
NRC_ILLCMD提供非法指令。
NRC_CMDTMO该命令已超时。
NRC_INCOMP消息不完整。应用程序是发出另一个命令。
NRC_BADDR缓冲区地址是非法的。
NRC_SNUMOUT会话号码超出范围。
NRC_NORES没有资源可用。
NRC_SCLOSED会议闭幕。
NRC_CMDCAN该命令被取消。
NRC_DUPNAME本地名称表中存在重复的名称。
NRC_NAMTFUL名称表已满。
NRC_ACTSES命令完成了该名称具有活动会话,不再注册。
NRC_LOCTFUL本地会话表已满。
NRC_REMTFUL远程会话表已满。打开会话的请求被拒绝。
NRC_ILLNN指定了非法的名称号码。
NRC_NOCALL系统没有找到被调用的名称。
NRC_NOWILDncb_name成员不允许使用通配符。
NRC_INUSE该名称已在远程适配器上使用。
NRC_NAMERR名称被删除。
NRC_SABORT会议异常结束。
NRC_NAMCONF发现名称冲突。
NRC_IFBUSY界面很忙
NRC_TOOMANY太多的命令很出色;应用程序可以稍后重试命令。
NRC_BRIDGEncb_lana_num成员没有指定有效的网络号码。
NRC_CANOCCR命令在取消操作发生时完成。
NRC_CANCELThe NCBCANCEL command was not valid; the command was not canceled.
NRC_DUPENV该名称由另一个本地进程定义。
NRC_ENVNOTDEF环境没有定义。必须发出复位命令。
NRC_OSRESNOTAV操作系统资源耗尽。应用程序可以稍后重试命令。
NRC_MAXAPPS超过了最大申请数量。
NRC_NOSAPS没有服务接入点(SAP)可用于NetBIOS。
NRC_NORESOURCES所请求的资源不可用。
NRC_INVADDRESSNCB地址无效。
 此返回代码不是IBM NetBIOS 3.0规范的一部分,不会在NCB结构中返回。而是由Netbios的函数返回。
NRC_INVDDID该NCB DDID无效。
NRC_LOCKFAIL尝试锁定用户区域失败。
NRC_OPENERR在由设备驱动程序执行的打开操作期间发生错误。此返回码不是IBM NetBIOS 3.0规范的一部分。
NRC_SYSTEM发生系统错误。
NRC_PENDING异步操作尚未完成。

ncb_lsn

指定本地会话号码。此号码唯一标识环境中的会话。

ncb_num

指定本地网络名称的编号。NCBADDNAME或NCBADDGRNAME命令成功后,该号码由Netbios的返回。这个数字,而不是名称,必须与所有数据报命令和NCBRECVANY命令一起使用。

NAME_NUMBER_1(见NCBRESET)的编号始终为0x01。Netbios的为其余的名称分配0x02到0xFE的值。

//监控信息。结构水平

指向消息缓冲区。

ncb_length

指定消息缓冲区的大小(以字节为单位)。

ncb_callname

指定包含远程名称的字符串。应提供尾随空格字符以使字符串的长度等于NCBNAMSZ。

ncb_name

指定包含本地名称的字符串。应提供尾随空格字符以使字符串的长度等于NCBNAMSZ。

ncb_rto

指定会话的接收超时时间(以500毫秒为单位)。值为零意味着没有超时。用NCBCALL或NCBLISTEN命令指定。影响后续NCBRECV命令。

ncb_sto

指定会话的发送超时时间(以500毫秒为单位)。值为零意味着没有超时。用NCBCALL或NCBLISTEN命令指定。影响后续的NCBSEND和NCBCHAINSEND命令。

ncb_post

指定异步NCB完成时调用的例程的地址。完成例程通过指向完成的网络控制块的指针。

ncb_lana_num

指定LAN适配器号。这个基于零的号码对应于使用特定LAN适配器板的特定传输提供商。

ncb_cmd_cplt

指定完成标志。该值与ncb_retcode成员相同。

ncb_reserve

Reserved; must be zero.

ncb_event

指定异步网络控制块完成时设置为信号状态的Windows事件的句柄。如果Netbios的函数返回非零值,则发出事件。

ncb_event成员必须为零,否则ncb_command成员不设置ASYNCH值,否则ncb_post不为零。否则返回NRC_ILLCMD。

当接受异步NetBIOS命令时,由ncb_event指定的事件由系统设置为非指定状态,并且当异步NetBIOS命令完成时,将其设置为信号状态。

使用ncb_event提交异步请求比使用ncb_post需要更少的系统资源。此外,当ncb_event非零时,如果线程在请求??被处理之前终止,则挂起的请求将被取消。对于使用ncb_post发送的请求不是这样。

Netbios的只能使用手动复位事件。给定事件不应与多个活动的异步NetBIOS命令相关联。

也可以看看

ACTION_HEADER, ADAPTER_STATUS, FIND_NAME_BUFFER, FIND_NAME_HEADER, LANA_ENUM, NAME_BUFFER, Netbios的, SESSION_BUFFER, SESSION_HEADER