1/**
  2 * This file has no copyright assigned and is placed in the Public Domain.
  3 * This file is part of the mingw-w64 runtime package.
  4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5 */
  6#ifndef NCB_INCLUDED
  7#define NCB_INCLUDED
  8
  9#ifdef __cplusplus
 10extern "C" {
 11#endif
 12
 13#define NCBNAMSZ 16
 14#define MAX_LANA 254
 15
 16  typedef struct _NCB {
 17    UCHAR ncb_command;
 18    UCHAR ncb_retcode;
 19    UCHAR ncb_lsn;
 20    UCHAR ncb_num;
 21    PUCHAR ncb_buffer;
 22    WORD ncb_length;
 23    UCHAR ncb_callname[NCBNAMSZ];
 24    UCHAR ncb_name[NCBNAMSZ];
 25    UCHAR ncb_rto;
 26    UCHAR ncb_sto;
 27    void (CALLBACK *ncb_post)(struct _NCB *);
 28    UCHAR ncb_lana_num;
 29    UCHAR ncb_cmd_cplt;
 30#ifdef _WIN64
 31    UCHAR ncb_reserve[18];
 32#else
 33    UCHAR ncb_reserve[10];
 34#endif
 35    HANDLE ncb_event;
 36
 37  } NCB,*PNCB;
 38
 39  typedef struct _ADAPTER_STATUS {
 40    UCHAR adapter_address[6];
 41    UCHAR rev_major;
 42    UCHAR reserved0;
 43    UCHAR adapter_type;
 44    UCHAR rev_minor;
 45    WORD duration;
 46    WORD frmr_recv;
 47    WORD frmr_xmit;
 48    WORD iframe_recv_err;
 49    WORD xmit_aborts;
 50    DWORD xmit_success;
 51    DWORD recv_success;
 52    WORD iframe_xmit_err;
 53    WORD recv_buff_unavail;
 54    WORD t1_timeouts;
 55    WORD ti_timeouts;
 56    DWORD reserved1;
 57    WORD free_ncbs;
 58    WORD max_cfg_ncbs;
 59    WORD max_ncbs;
 60    WORD xmit_buf_unavail;
 61    WORD max_dgram_size;
 62    WORD pending_sess;
 63    WORD max_cfg_sess;
 64    WORD max_sess;
 65    WORD max_sess_pkt_size;
 66    WORD name_count;
 67  } ADAPTER_STATUS,*PADAPTER_STATUS;
 68
 69  typedef struct _NAME_BUFFER {
 70    UCHAR name[NCBNAMSZ];
 71    UCHAR name_num;
 72    UCHAR name_flags;
 73  } NAME_BUFFER,*PNAME_BUFFER;
 74
 75#define NAME_FLAGS_MASK 0x87
 76
 77#define GROUP_NAME 0x80
 78#define UNIQUE_NAME 0x00
 79
 80#define REGISTERING 0x00
 81#define REGISTERED 0x04
 82#define DEREGISTERED 0x05
 83#define DUPLICATE 0x06
 84#define DUPLICATE_DEREG 0x07
 85
 86  typedef struct _SESSION_HEADER {
 87    UCHAR sess_name;
 88    UCHAR num_sess;
 89    UCHAR rcv_dg_outstanding;
 90    UCHAR rcv_any_outstanding;
 91  } SESSION_HEADER,*PSESSION_HEADER;
 92
 93  typedef struct _SESSION_BUFFER {
 94    UCHAR lsn;
 95    UCHAR state;
 96    UCHAR local_name[NCBNAMSZ];
 97    UCHAR remote_name[NCBNAMSZ];
 98    UCHAR rcvs_outstanding;
 99    UCHAR sends_outstanding;
100  } SESSION_BUFFER,*PSESSION_BUFFER;
101
102#define LISTEN_OUTSTANDING 0x01
103#define CALL_PENDING 0x02
104#define SESSION_ESTABLISHED 0x03
105#define HANGUP_PENDING 0x04
106#define HANGUP_COMPLETE 0x05
107#define SESSION_ABORTED 0x06
108
109  typedef struct _LANA_ENUM {
110    UCHAR length;
111    UCHAR lana[MAX_LANA+1];
112  } LANA_ENUM,*PLANA_ENUM;
113
114  typedef struct _FIND_NAME_HEADER {
115    WORD node_count;
116    UCHAR reserved;
117    UCHAR unique_group;
118  } FIND_NAME_HEADER,*PFIND_NAME_HEADER;
119
120  typedef struct _FIND_NAME_BUFFER {
121    UCHAR length;
122    UCHAR access_control;
123    UCHAR frame_control;
124    UCHAR destination_addr[6];
125    UCHAR source_addr[6];
126    UCHAR routing_info[18];
127  } FIND_NAME_BUFFER,*PFIND_NAME_BUFFER;
128
129  typedef struct _ACTION_HEADER {
130    ULONG transport_id;
131    USHORT action_code;
132    USHORT reserved;
133  } ACTION_HEADER,*PACTION_HEADER;
134
135#define ALL_TRANSPORTS "M\0\0\0"
136#define MS_NBF "MNBF"
137
138#define NCBCALL 0x10
139#define NCBLISTEN 0x11
140#define NCBHANGUP 0x12
141#define NCBSEND 0x14
142#define NCBRECV 0x15
143#define NCBRECVANY 0x16
144#define NCBCHAINSEND 0x17
145#define NCBDGSEND 0x20
146#define NCBDGRECV 0x21
147#define NCBDGSENDBC 0x22
148#define NCBDGRECVBC 0x23
149#define NCBADDNAME 0x30
150#define NCBDELNAME 0x31
151#define NCBRESET 0x32
152#define NCBASTAT 0x33
153#define NCBSSTAT 0x34
154#define NCBCANCEL 0x35
155#define NCBADDGRNAME 0x36
156#define NCBENUM 0x37
157#define NCBUNLINK 0x70
158#define NCBSENDNA 0x71
159#define NCBCHAINSENDNA 0x72
160#define NCBLANSTALERT 0x73
161#define NCBACTION 0x77
162#define NCBFINDNAME 0x78
163#define NCBTRACE 0x79
164
165#define ASYNCH 0x80
166
167#define NRC_GOODRET 0x00
168
169#define NRC_BUFLEN 0x01
170#define NRC_ILLCMD 0x03
171#define NRC_CMDTMO 0x05
172#define NRC_INCOMP 0x06
173#define NRC_BADDR 0x07
174#define NRC_SNUMOUT 0x08
175#define NRC_NORES 0x09
176#define NRC_SCLOSED 0x0a
177#define NRC_CMDCAN 0x0b
178#define NRC_DUPNAME 0x0d
179#define NRC_NAMTFUL 0x0e
180#define NRC_ACTSES 0x0f
181#define NRC_LOCTFUL 0x11
182#define NRC_REMTFUL 0x12
183#define NRC_ILLNN 0x13
184#define NRC_NOCALL 0x14
185#define NRC_NOWILD 0x15
186#define NRC_INUSE 0x16
187#define NRC_NAMERR 0x17
188#define NRC_SABORT 0x18
189#define NRC_NAMCONF 0x19
190#define NRC_IFBUSY 0x21
191#define NRC_TOOMANY 0x22
192#define NRC_BRIDGE 0x23
193#define NRC_CANOCCR 0x24
194#define NRC_CANCEL 0x26
195#define NRC_DUPENV 0x30
196#define NRC_ENVNOTDEF 0x34
197#define NRC_OSRESNOTAV 0x35
198#define NRC_MAXAPPS 0x36
199#define NRC_NOSAPS 0x37
200#define NRC_NORESOURCES 0x38
201#define NRC_INVADDRESS 0x39
202#define NRC_INVDDID 0x3B
203#define NRC_LOCKFAIL 0x3C
204#define NRC_OPENERR 0x3f
205#define NRC_SYSTEM 0x40
206
207#define NRC_PENDING 0xff
208
209  UCHAR WINAPI Netbios(PNCB pncb);
210
211#define NCB_POST void CALLBACK
212
213#ifdef __cplusplus
214}
215#endif
216#endif