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