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