summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/nb30.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--public/sdk/inc/nb30.h308
1 files changed, 308 insertions, 0 deletions
diff --git a/public/sdk/inc/nb30.h b/public/sdk/inc/nb30.h
new file mode 100644
index 000000000..1a51629ba
--- /dev/null
+++ b/public/sdk/inc/nb30.h
@@ -0,0 +1,308 @@
+//*++
+//
+// Copyright (c) 1991-1996 Microsoft Corporation
+//
+// Module Name:
+//
+// nb30.h
+//
+// Abstract:
+//
+// This module contains the definitions for portable NetBIOS 3.0
+// support.
+//
+//--*/
+
+#ifndef NCB_INCLUDED
+#define NCB_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/****************************************************************
+ * *
+ * Data structure templates *
+ * *
+ ****************************************************************/
+
+#define NCBNAMSZ 16 /* absolute length of a net name */
+#define MAX_LANA 254 /* lana's in range 0 to MAX_LANA inclusive */
+
+/*
+ * Network Control Block
+ */
+
+typedef struct _NCB {
+ UCHAR ncb_command; /* command code */
+ UCHAR ncb_retcode; /* return code */
+ UCHAR ncb_lsn; /* local session number */
+ UCHAR ncb_num; /* number of our network name */
+ PUCHAR ncb_buffer; /* address of message buffer */
+ WORD ncb_length; /* size of message buffer */
+ UCHAR ncb_callname[NCBNAMSZ]; /* blank-padded name of remote */
+ UCHAR ncb_name[NCBNAMSZ]; /* our blank-padded netname */
+ UCHAR ncb_rto; /* rcv timeout/retry count */
+ UCHAR ncb_sto; /* send timeout/sys timeout */
+ void (CALLBACK *ncb_post)( struct _NCB * ); /* POST routine address */
+ UCHAR ncb_lana_num; /* lana (adapter) number */
+ UCHAR ncb_cmd_cplt; /* 0xff => commmand pending */
+ UCHAR ncb_reserve[10]; /* reserved, used by BIOS */
+ HANDLE ncb_event; /* HANDLE to Win32 event which */
+ /* will be set to the signalled */
+ /* state when an ASYNCH command */
+ /* completes */
+} NCB, *PNCB;
+
+/*
+ * Structure returned to the NCB command NCBASTAT is ADAPTER_STATUS followed
+ * by an array of NAME_BUFFER structures.
+ */
+
+typedef struct _ADAPTER_STATUS {
+ UCHAR adapter_address[6];
+ UCHAR rev_major;
+ UCHAR reserved0;
+ UCHAR adapter_type;
+ UCHAR rev_minor;
+ WORD duration;
+ WORD frmr_recv;
+ WORD frmr_xmit;
+
+ WORD iframe_recv_err;
+
+ WORD xmit_aborts;
+ DWORD xmit_success;
+ DWORD recv_success;
+
+ WORD iframe_xmit_err;
+
+ WORD recv_buff_unavail;
+ WORD t1_timeouts;
+ WORD ti_timeouts;
+ DWORD reserved1;
+ WORD free_ncbs;
+ WORD max_cfg_ncbs;
+ WORD max_ncbs;
+ WORD xmit_buf_unavail;
+ WORD max_dgram_size;
+ WORD pending_sess;
+ WORD max_cfg_sess;
+ WORD max_sess;
+ WORD max_sess_pkt_size;
+ WORD name_count;
+} ADAPTER_STATUS, *PADAPTER_STATUS;
+
+typedef struct _NAME_BUFFER {
+ UCHAR name[NCBNAMSZ];
+ UCHAR name_num;
+ UCHAR name_flags;
+} NAME_BUFFER, *PNAME_BUFFER;
+
+// values for name_flags bits.
+
+#define NAME_FLAGS_MASK 0x87
+
+#define GROUP_NAME 0x80
+#define UNIQUE_NAME 0x00
+
+#define REGISTERING 0x00
+#define REGISTERED 0x04
+#define DEREGISTERED 0x05
+#define DUPLICATE 0x06
+#define DUPLICATE_DEREG 0x07
+
+/*
+ * Structure returned to the NCB command NCBSSTAT is SESSION_HEADER followed
+ * by an array of SESSION_BUFFER structures. If the NCB_NAME starts with an
+ * asterisk then an array of these structures is returned containing the
+ * status for all names.
+ */
+
+typedef struct _SESSION_HEADER {
+ UCHAR sess_name;
+ UCHAR num_sess;
+ UCHAR rcv_dg_outstanding;
+ UCHAR rcv_any_outstanding;
+} SESSION_HEADER, *PSESSION_HEADER;
+
+typedef struct _SESSION_BUFFER {
+ UCHAR lsn;
+ UCHAR state;
+ UCHAR local_name[NCBNAMSZ];
+ UCHAR remote_name[NCBNAMSZ];
+ UCHAR rcvs_outstanding;
+ UCHAR sends_outstanding;
+} SESSION_BUFFER, *PSESSION_BUFFER;
+
+// Values for state
+
+#define LISTEN_OUTSTANDING 0x01
+#define CALL_PENDING 0x02
+#define SESSION_ESTABLISHED 0x03
+#define HANGUP_PENDING 0x04
+#define HANGUP_COMPLETE 0x05
+#define SESSION_ABORTED 0x06
+
+/*
+ * Structure returned to the NCB command NCBENUM.
+ *
+ * On a system containing lana's 0, 2 and 3, a structure with
+ * length =3, lana[0]=0, lana[1]=2 and lana[2]=3 will be returned.
+ */
+
+typedef struct _LANA_ENUM {
+ UCHAR length; // Number of valid entries in lana[]
+ UCHAR lana[MAX_LANA+1];
+} LANA_ENUM, *PLANA_ENUM;
+
+/*
+ * Structure returned to the NCB command NCBFINDNAME is FIND_NAME_HEADER followed
+ * by an array of FIND_NAME_BUFFER structures.
+ */
+
+typedef struct _FIND_NAME_HEADER {
+ WORD node_count;
+ UCHAR reserved;
+ UCHAR unique_group;
+} FIND_NAME_HEADER, *PFIND_NAME_HEADER;
+
+typedef struct _FIND_NAME_BUFFER {
+ UCHAR length;
+ UCHAR access_control;
+ UCHAR frame_control;
+ UCHAR destination_addr[6];
+ UCHAR source_addr[6];
+ UCHAR routing_info[18];
+} FIND_NAME_BUFFER, *PFIND_NAME_BUFFER;
+
+/*
+ * Structure provided with NCBACTION. The purpose of NCBACTION is to provide
+ * transport specific extensions to netbios.
+ */
+
+typedef struct _ACTION_HEADER {
+ ULONG transport_id;
+ USHORT action_code;
+ USHORT reserved;
+} ACTION_HEADER, *PACTION_HEADER;
+
+// Values for transport_id
+
+#define ALL_TRANSPORTS "M\0\0\0"
+#define MS_NBF "MNBF"
+
+
+/****************************************************************
+ * *
+ * Special values and constants *
+ * *
+ ****************************************************************/
+
+/*
+ * NCB Command codes
+ */
+
+#define NCBCALL 0x10 /* NCB CALL */
+#define NCBLISTEN 0x11 /* NCB LISTEN */
+#define NCBHANGUP 0x12 /* NCB HANG UP */
+#define NCBSEND 0x14 /* NCB SEND */
+#define NCBRECV 0x15 /* NCB RECEIVE */
+#define NCBRECVANY 0x16 /* NCB RECEIVE ANY */
+#define NCBCHAINSEND 0x17 /* NCB CHAIN SEND */
+#define NCBDGSEND 0x20 /* NCB SEND DATAGRAM */
+#define NCBDGRECV 0x21 /* NCB RECEIVE DATAGRAM */
+#define NCBDGSENDBC 0x22 /* NCB SEND BROADCAST DATAGRAM */
+#define NCBDGRECVBC 0x23 /* NCB RECEIVE BROADCAST DATAGRAM */
+#define NCBADDNAME 0x30 /* NCB ADD NAME */
+#define NCBDELNAME 0x31 /* NCB DELETE NAME */
+#define NCBRESET 0x32 /* NCB RESET */
+#define NCBASTAT 0x33 /* NCB ADAPTER STATUS */
+#define NCBSSTAT 0x34 /* NCB SESSION STATUS */
+#define NCBCANCEL 0x35 /* NCB CANCEL */
+#define NCBADDGRNAME 0x36 /* NCB ADD GROUP NAME */
+#define NCBENUM 0x37 /* NCB ENUMERATE LANA NUMBERS */
+#define NCBUNLINK 0x70 /* NCB UNLINK */
+#define NCBSENDNA 0x71 /* NCB SEND NO ACK */
+#define NCBCHAINSENDNA 0x72 /* NCB CHAIN SEND NO ACK */
+#define NCBLANSTALERT 0x73 /* NCB LAN STATUS ALERT */
+#define NCBACTION 0x77 /* NCB ACTION */
+#define NCBFINDNAME 0x78 /* NCB FIND NAME */
+#define NCBTRACE 0x79 /* NCB TRACE */
+
+
+#define ASYNCH 0x80 /* high bit set == asynchronous */
+
+/*
+ * NCB Return codes
+ */
+
+#define NRC_GOODRET 0x00 /* good return */
+ /* also returned when ASYNCH request accepted */
+#define NRC_BUFLEN 0x01 /* illegal buffer length */
+#define NRC_ILLCMD 0x03 /* illegal command */
+#define NRC_CMDTMO 0x05 /* command timed out */
+#define NRC_INCOMP 0x06 /* message incomplete, issue another command */
+#define NRC_BADDR 0x07 /* illegal buffer address */
+#define NRC_SNUMOUT 0x08 /* session number out of range */
+#define NRC_NORES 0x09 /* no resource available */
+#define NRC_SCLOSED 0x0a /* session closed */
+#define NRC_CMDCAN 0x0b /* command cancelled */
+#define NRC_DUPNAME 0x0d /* duplicate name */
+#define NRC_NAMTFUL 0x0e /* name table full */
+#define NRC_ACTSES 0x0f /* no deletions, name has active sessions */
+#define NRC_LOCTFUL 0x11 /* local session table full */
+#define NRC_REMTFUL 0x12 /* remote session table full */
+#define NRC_ILLNN 0x13 /* illegal name number */
+#define NRC_NOCALL 0x14 /* no callname */
+#define NRC_NOWILD 0x15 /* cannot put * in NCB_NAME */
+#define NRC_INUSE 0x16 /* name in use on remote adapter */
+#define NRC_NAMERR 0x17 /* name deleted */
+#define NRC_SABORT 0x18 /* session ended abnormally */
+#define NRC_NAMCONF 0x19 /* name conflict detected */
+#define NRC_IFBUSY 0x21 /* interface busy, IRET before retrying */
+#define NRC_TOOMANY 0x22 /* too many commands outstanding, retry later */
+#define NRC_BRIDGE 0x23 /* ncb_lana_num field invalid */
+#define NRC_CANOCCR 0x24 /* command completed while cancel occurring */
+#define NRC_CANCEL 0x26 /* command not valid to cancel */
+#define NRC_DUPENV 0x30 /* name defined by anther local process */
+#define NRC_ENVNOTDEF 0x34 /* environment undefined. RESET required */
+#define NRC_OSRESNOTAV 0x35 /* required OS resources exhausted */
+#define NRC_MAXAPPS 0x36 /* max number of applications exceeded */
+#define NRC_NOSAPS 0x37 /* no saps available for netbios */
+#define NRC_NORESOURCES 0x38 /* requested resources are not available */
+#define NRC_INVADDRESS 0x39 /* invalid ncb address or length > segment */
+#define NRC_INVDDID 0x3B /* invalid NCB DDID */
+#define NRC_LOCKFAIL 0x3C /* lock of user area failed */
+#define NRC_OPENERR 0x3f /* NETBIOS not loaded */
+#define NRC_SYSTEM 0x40 /* system error */
+
+#define NRC_PENDING 0xff /* asynchronous command is not yet finished */
+
+/****************************************************************
+ * *
+ * main user entry point for NetBIOS 3.0 *
+ * *
+ * Usage: result = Netbios( pncb ); *
+ ****************************************************************/
+
+UCHAR
+APIENTRY
+Netbios(
+ PNCB pncb
+ );
+
+/****************************************************************
+ * *
+ * Prefix for callback routines *
+ * *
+ * Usage in a declaration: NCB_POST MyPostRoutine( PNCB pncb ); *
+ ****************************************************************/
+
+#define NCB_POST void CALLBACK
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NCB_INCLUDED */