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