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
10 extern "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
217