1/** 2 * Windows API header module 3 * 4 * Translated from MinGW Windows headers 5 * 6 * Authors: Stewart Gordon 7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 8 * Source: $(DRUNTIMESRC core/sys/windows/_nb30.d) 9 */ 10module core.sys.windows.nb30; 11version (Windows): 12@system: 13 14import core.sys.windows.windef; 15 16enum size_t 17 NCBNAMSZ = 16, 18 MAX_LANA = 254; 19 20// FIXME: are these really two sets of constants? 21enum : UCHAR { 22 REGISTERING = 0, 23 REGISTERED = 4, 24 DEREGISTERED, 25 DUPLICATE, 26 DUPLICATE_DEREG, // = 7 27 UNIQUE_NAME = 0, 28 GROUP_NAME = 0x80, 29 NAME_FLAGS_MASK = 0x87 30} 31 32enum : UCHAR { 33 LISTEN_OUTSTANDING = 1, 34 CALL_PENDING, 35 SESSION_ESTABLISHED, 36 HANGUP_PENDING, 37 HANGUP_COMPLETE, 38 SESSION_ABORTED // = 6 39} 40 41enum char[4] 42 ALL_TRANSPORTS = "M\0\0\0", 43 MS_NBF = "MNBF"; 44 45enum : UCHAR { 46 NCBCALL = 0x10, 47 NCBLISTEN, 48 NCBHANGUP, // = 0x12 49 NCBSEND = 0x14, 50 NCBRECV, 51 NCBRECVANY, 52 NCBCHAINSEND, // = 0x17 53 NCBDGSEND = 0x20, 54 NCBDGRECV, 55 NCBDGSENDBC, 56 NCBDGRECVBC, // = 0x23, 57 NCBADDNAME = 0x30, 58 NCBDELNAME, 59 NCBRESET, 60 NCBASTAT, 61 NCBSSTAT, 62 NCBCANCEL, 63 NCBADDGRNAME, 64 NCBENUM, // = 0x37 65 NCBUNLINK = 0x70, 66 NCBSENDNA, 67 NCBCHAINSENDNA, 68 NCBLANSTALERT, // = 0x73 69 NCBACTION = 0x77, 70 NCBFINDNAME, 71 NCBTRACE // = 0x79 72} 73 74enum UCHAR ASYNCH = 0x80; 75 76enum : UCHAR { 77 NRC_GOODRET = 0x00, 78 NRC_BUFLEN = 0x01, 79 NRC_ILLCMD = 0x03, 80 NRC_CMDTMO = 0x05, 81 NRC_INCOMP, 82 NRC_BADDR, 83 NRC_SNUMOUT, 84 NRC_NORES, 85 NRC_SCLOSED, 86 NRC_CMDCAN, // = 0x0b 87 NRC_DUPNAME = 0x0d, 88 NRC_NAMTFUL, 89 NRC_ACTSES, // = 0x0f, 90 NRC_LOCTFUL = 0x11, 91 NRC_REMTFUL, 92 NRC_ILLNN, 93 NRC_NOCALL, 94 NRC_NOWILD, 95 NRC_INUSE, 96 NRC_NAMERR, 97 NRC_SABORT, 98 NRC_NAMCONF, // = 0x19 99 NRC_IFBUSY = 0x21, 100 NRC_TOOMANY, 101 NRC_BRIDGE, 102 NRC_CANOCCR, // = 0x24 103 NRC_CANCEL = 0x26, 104 NRC_DUPENV = 0x30, 105 NRC_ENVNOTDEF = 0x34, 106 NRC_OSRESNOTAV, 107 NRC_MAXAPPS, 108 NRC_NOSAPS, 109 NRC_NORESOURCES, 110 NRC_INVADDRESS, // = 0x39 111 NRC_INVDDID = 0x3B, 112 NRC_LOCKFAIL = 0x3C, 113 NRC_OPENERR = 0x3f, 114 NRC_SYSTEM = 0x40, 115 NRC_PENDING = 0xff 116} 117 118struct ACTION_HEADER { 119 union { 120 /* transport_id is defined as a ULONG, but both the above constants 121 * and the documented description suggest it should be a char[4] 122 */ 123 ULONG transport_id; 124 char[4] c_transport_id; 125 } 126 USHORT action_code; 127 USHORT reserved; 128} 129alias ACTION_HEADER* PACTION_HEADER; 130 131struct ADAPTER_STATUS { 132 UCHAR[6] adapter_address; 133 UCHAR rev_major; 134 UCHAR reserved0; 135 UCHAR adapter_type; 136 UCHAR rev_minor; 137 WORD duration; 138 WORD frmr_recv; 139 WORD frmr_xmit; 140 WORD iframe_recv_err; 141 WORD xmit_aborts; 142 DWORD xmit_success; 143 DWORD recv_success; 144 WORD iframe_xmit_err; 145 WORD recv_buff_unavail; 146 WORD t1_timeouts; 147 WORD ti_timeouts; 148 DWORD reserved1; 149 WORD free_ncbs; 150 WORD max_cfg_ncbs; 151 WORD max_ncbs; 152 WORD xmit_buf_unavail; 153 WORD max_dgram_size; 154 WORD pending_sess; 155 WORD max_cfg_sess; 156 WORD max_sess; 157 WORD max_sess_pkt_size; 158 WORD name_count; 159} 160alias ADAPTER_STATUS* PADAPTER_STATUS; 161 162struct FIND_NAME_BUFFER { 163 /* From Win32 API docs 164 * 165 * length 166 * Specifies the length, in bytes, of the FIND_NAME_BUFFER 167 * structure. Although this structure always occupies 33 bytes, 168 * not all of the structure is necessarily valid. 169 * 170 * On this basis, should length be initialised? 171 */ 172 UCHAR length; 173 UCHAR access_control; 174 UCHAR frame_control; 175 UCHAR[6] destination_addr; 176 UCHAR[6] source_addr; 177 UCHAR[18] routing_info; 178} 179alias FIND_NAME_BUFFER* PFIND_NAME_BUFFER; 180 181struct FIND_NAME_HEADER { 182 WORD node_count; 183 UCHAR reserved; 184 UCHAR unique_group; 185} 186alias FIND_NAME_HEADER* PFIND_NAME_HEADER; 187 188struct LANA_ENUM { 189 UCHAR length; 190 UCHAR[MAX_LANA+1] lana; 191} 192alias LANA_ENUM* PLANA_ENUM; 193 194struct NAME_BUFFER { 195 UCHAR[NCBNAMSZ] name; 196 UCHAR name_num; 197 UCHAR name_flags; 198} 199alias NAME_BUFFER* PNAME_BUFFER; 200 201struct NCB { 202 UCHAR ncb_command; 203 UCHAR ncb_retcode; 204 UCHAR ncb_lsn; 205 UCHAR ncb_num; 206 PUCHAR ncb_buffer; 207 WORD ncb_length; 208 UCHAR[NCBNAMSZ] ncb_callname; 209 UCHAR[NCBNAMSZ] ncb_name; 210 UCHAR ncb_rto; 211 UCHAR ncb_sto; 212 extern (Windows) void function(NCB*) ncb_post; 213 UCHAR ncb_lana_num; 214 UCHAR ncb_cmd_cplt; 215 version (Win64) 216 UCHAR[18] ncb_reserve; 217 else 218 UCHAR[10] ncb_reserve; 219 HANDLE ncb_event; 220} 221alias NCB* PNCB; 222 223struct SESSION_BUFFER { 224 UCHAR lsn; 225 UCHAR state; 226 UCHAR[NCBNAMSZ] local_name; 227 UCHAR[NCBNAMSZ] remote_name; 228 UCHAR rcvs_outstanding; 229 UCHAR sends_outstanding; 230} 231alias SESSION_BUFFER* PSESSION_BUFFER; 232 233struct SESSION_HEADER { 234 UCHAR sess_name; 235 UCHAR num_sess; 236 UCHAR rcv_dg_outstanding; 237 UCHAR rcv_any_outstanding; 238} 239alias SESSION_HEADER* PSESSION_HEADER; 240 241extern (Windows) UCHAR Netbios(PNCB); 242