File Index Symbol Index

//
// Copyright (c) 1991-1999 Microsoft Corporation
//
// Module Name:
//
// nb30.h
//
// Abstract:
//
// This module contains the definitions for portable NetBIOS 3.0
// support.
//
#ifndef NCB_INCLUDED
#define NCB_INCLUDED
#if _MSC_VER > 1000
#pragma once
#endif
#include <winapifamily.h>
#ifdef __cplusplus
extern
"C"
{
#endif
#if _MSC_VER >= 1200
#pragma warning(push) #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
/**************************************************************** * * * 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_rto
;
/* rcv timeout/retry count */
UCHAR
ncb_sto
;
/* send timeout/sys timeout */
UCHAR
ncb_lana_num
;
/* lana (adapter) number */
UCHAR
ncb_cmd_cplt
;
/* 0xff => commmand pending */
#ifdef _WIN64
UCHAR ncb_reserve[18]; /* reserved, used by BIOS */
#else
UCHAR
ncb_reserve
[
10
];
/* reserved, used by BIOS */
#endif
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_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
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[]
}
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
Netbios
(
PNCB
pncb
);
/**************************************************************** * * * Prefix for callback routines * * * * Usage in a declaration: NCB_POST MyPostRoutine( PNCB pncb ); * ****************************************************************/
#define NCB_POST void CALLBACK
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#if _MSC_VER >= 1200
#pragma warning(pop)
#endif
#ifdef __cplusplus
}
#endif
#endif /* NCB_INCLUDED */