The NCB structure represents a network control block. It contains information about the command to perform, an optional post routine, an optional event handle, and a pointer to a buffer that is used for messages or other data. A pointer to this structure is passed to the Netbios function.
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;
Code | Meaning |
---|---|
NCBACTION | Windows NT: Enables extensions to the transport interface. NCBACTION is mapped to TdiAction. When this code is specified, the ncb_buffer member points to a buffer to be filled with an ACTION_HEADER structure, which is optionally followed by data. NCBACTION commands cannot be canceled by using NCBCANCEL. NCBACTION is not a standard NetBIOS 3.0 command. |
NCBADDGRNAME | Adds a group name to the local name table. This name cannot be used by another process on the network as a unique name, but it can be added by anyone as a group name. |
NCBADDNAME | Adds a unique name to the local name table. The TDI driver ensures that the name is unique across the network. |
NCBASTAT | Retrieves the status of either a local or remote adapter. When this code is specified, the ncb_buffer member points to a buffer to be filled with an ADAPTER_STATUS structure, followed by an array of NAME_BUFFER structures. |
NCBCALL | Opens a session with another name. |
NCBCANCEL | Cancels a previous pending command. |
NCBCHAINSEND | Sends the contents of two data buffers to the specified session partner. |
NCBCHAINSENDNA | Sends the contents of two data buffers to the specified session partner and does not wait for acknowledgment. |
NCBDELNAME | Deletes a name from the local name table. |
NCBDGRECV | Receives a datagram from any name. |
NCBDGRECVBC | Receives a broadcast datagram from any name. |
NCBDGSEND | Sends datagram to a specified name. |
NCBDGSENDBC | Sends a broadcast datagram to every host on the local area network (LAN). |
NCBENUM | Windows NT: Enumerates LAN adapter (LANA) numbers. When this code is specified, the ncb_buffer member points to a buffer to be filled with a LANA_ENUM structure. NCBENUM is not a standard NetBIOS 3.0 command. |
NCBFINDNAME | Determines the location of a name on the network. When this code is specified, the ncb_buffer member points to a buffer to be filled with a FIND_NAME_HEADER structure followed by one or more FIND_NAME_BUFFER structures. |
NCBHANGUP | Closes a specified session. |
NCBLANSTALERT | Windows NT: Notifies the user of LAN failures that last for more than one minute. |
NCBLISTEN | Enables a session to be opened with another name (local or remote). |
NCBRECV | Receives data from the specified session partner. |
NCBRECVANY | Receives data from any session corresponding to a specified name. |
NCBRESET | Resets a LAN adapter. An adapter must be reset before it can accept any other NCB command that specifies the same number in the ncb_lana_num member. |
Use the following values to specify how resources are to be freed: | |
|
|
|
|
NCBSEND | Sends data to the specified session partner. |
NCBSENDNA | Sends data to specified session partner and does not wait for acknowledgment. |
NCBSSTAT | Retrieves the status of the session. When this value is specified, the ncb_buffer member points to a buffer to be filled with a SESSION_HEADER structure, followed by one or more SESSION_BUFFER structures. |
NCBTRACE | Activates or deactivates NCB tracing. This command is not supported. |
NCBUNLINK | Unlinks the adapter. This command is provided for compatibility with earlier versions of NetBIOS. It has no effect in Win32. |
Value | Meaning |
---|---|
NRC_GOODRET | The operation succeeded. |
NRC_BUFLEN | An illegal buffer length was supplied. |
NRC_ILLCMD | An illegal command was supplied. |
NRC_CMDTMO | The command was timed out. |
NRC_INCOMP | The message was incomplete. The application is to issue another command. |
NRC_BADDR | The buffer address was illegal. |
NRC_SNUMOUT | The session number was out of range. |
NRC_NORES | No resource was available. |
NRC_SCLOSED | The session was closed. |
NRC_CMDCAN | The command was canceled. |
NRC_DUPNAME | A duplicate name existed in the local name table. |
NRC_NAMTFUL | The name table was full. |
NRC_ACTSES | The command finished; the name has active sessions and is no longer registered. |
NRC_LOCTFUL | The local session table was full. |
NRC_REMTFUL | The remote session table was full. The request to open a session was rejected. |
NRC_ILLNN | An illegal name number was specified. |
NRC_NOCALL | The system did not find the name that was called. |
NRC_NOWILD | Wildcards are not permitted in the ncb_name member. |
NRC_INUSE | The name was already in use on the remote adapter. |
NRC_NAMERR | The name was deleted. |
NRC_SABORT | The session ended abnormally. |
NRC_NAMCONF | A name conflict was detected. |
NRC_IFBUSY | The interface was busy. |
NRC_TOOMANY | Too many commands were outstanding; the application can retry the command later. |
NRC_BRIDGE | The ncb_lana_num member did not specify a valid network number. |
NRC_CANOCCR | The command finished while a cancel operation was occurring. |
NRC_CANCEL | The NCBCANCEL command was not valid; the command was not canceled. |
NRC_DUPENV | The name was defined by another local process. |
NRC_ENVNOTDEF | The environment was not defined. A reset command must be issued. |
NRC_OSRESNOTAV | Operating system resources were exhausted. The application can retry the command later. |
NRC_MAXAPPS | The maximum number of applications was exceeded. |
NRC_NOSAPS | No service access points (SAPs) were available for NetBIOS. |
NRC_NORESOURCES | The requested resources were not available. |
NRC_INVADDRESS | The NCB address was not valid. |
This return code is not part of the IBM NetBIOS 3.0 specification and is not returned in the NCB structure. Instead, it is returned by Netbios. | |
NRC_INVDDID | The NCB DDID was invalid. |
NRC_LOCKFAIL | The attempt to lock the user area failed. |
NRC_OPENERR | An error occurred during an open operation being performed by the device driver. This error code is not part of the NetBIOS 3.0 specification. |
NRC_SYSTEM | A system error occurred. |
NRC_PENDING | An asynchronous operation is not yet finished. |
The number for NAME_NUMBER_1 is always 0x01. Netbios assigns values in the range 0x02 to 0xFE for the remaining names.
Command | Purpose |
---|---|
NCBSEND | Contains the message to be sent. |
NCBRECV | Receives the message. |
NCBSSTAT | Receives the requested status information. |
If the buffer length is incorrect, the Netbios function returns the NRC_BUFLEN error code.
NCB_POST PostRoutine( PNCB pncb );
where the pncb parameter is a pointer to the completed network control block.
The ncb_event member must be zero if the ncb_command member does not have the ASYNCH flag set or if ncb_post is nonzero. Otherwise, Netbios returns the NRC_ILLCMD error code.
Using ncb_event to issue asynchronous requests requires fewer system resources than using ncb_post. In addition, when ncb_event is nonzero, the pending request is canceled if the thread terminates before the request is processed. This is not true for asynchronous requests sent using ncb_post.
Windows NT: Requires version 3.1 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in nb30.h.
The NetBIOS Interface Overview, NetBIOS Structures, ACTION_HEADER, ADAPTER_STATUS, FIND_NAME_BUFFER, FIND_NAME_HEADER, LANA_ENUM, NAME_BUFFER, Netbios, SESSION_BUFFER, SESSION_HEADER