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 only: 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 only: 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 only: 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 Windows NT or Windows 95. |
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.
ACTION_HEADER, ADAPTER_STATUS, FIND_NAME_BUFFER, FIND_NAME_HEADER, LANA_ENUM, NAME_BUFFER, Netbios, SESSION_BUFFER, SESSION_HEADER
Questions: