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