4e2933c620 2015-04-21 kinaba: /***********************************************************************\ 4e2933c620 2015-04-21 kinaba: * nb30.d * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Windows API header module * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Translated from MinGW Windows headers * 4e2933c620 2015-04-21 kinaba: * by Stewart Gordon * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Placed into public domain * 4e2933c620 2015-04-21 kinaba: \***********************************************************************/ 4e2933c620 2015-04-21 kinaba: module win32.nb30; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: private import win32.windef; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const size_t 4e2933c620 2015-04-21 kinaba: NCBNAMSZ = 16, 4e2933c620 2015-04-21 kinaba: MAX_LANA = 254; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // FIXME: are these really two sets of constants? 4e2933c620 2015-04-21 kinaba: enum : UCHAR { 4e2933c620 2015-04-21 kinaba: REGISTERING = 0, 4e2933c620 2015-04-21 kinaba: REGISTERED = 4, 4e2933c620 2015-04-21 kinaba: DEREGISTERED, 4e2933c620 2015-04-21 kinaba: DUPLICATE, 4e2933c620 2015-04-21 kinaba: DUPLICATE_DEREG, // = 7 4e2933c620 2015-04-21 kinaba: UNIQUE_NAME = 0, 4e2933c620 2015-04-21 kinaba: GROUP_NAME = 0x80, 4e2933c620 2015-04-21 kinaba: NAME_FLAGS_MASK = 0x87 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : UCHAR { 4e2933c620 2015-04-21 kinaba: LISTEN_OUTSTANDING = 1, 4e2933c620 2015-04-21 kinaba: CALL_PENDING, 4e2933c620 2015-04-21 kinaba: SESSION_ESTABLISHED, 4e2933c620 2015-04-21 kinaba: HANGUP_PENDING, 4e2933c620 2015-04-21 kinaba: HANGUP_COMPLETE, 4e2933c620 2015-04-21 kinaba: SESSION_ABORTED // = 6 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const char[4] 4e2933c620 2015-04-21 kinaba: ALL_TRANSPORTS = "M\0\0\0", 4e2933c620 2015-04-21 kinaba: MS_NBF = "MNBF"; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : UCHAR { 4e2933c620 2015-04-21 kinaba: NCBCALL = 0x10, 4e2933c620 2015-04-21 kinaba: NCBLISTEN, 4e2933c620 2015-04-21 kinaba: NCBHANGUP, // = 0x12 4e2933c620 2015-04-21 kinaba: NCBSEND = 0x14, 4e2933c620 2015-04-21 kinaba: NCBRECV, 4e2933c620 2015-04-21 kinaba: NCBRECVANY, 4e2933c620 2015-04-21 kinaba: NCBCHAINSEND, // = 0x17 4e2933c620 2015-04-21 kinaba: NCBDGSEND = 0x20, 4e2933c620 2015-04-21 kinaba: NCBDGRECV, 4e2933c620 2015-04-21 kinaba: NCBDGSENDBC, 4e2933c620 2015-04-21 kinaba: NCBDGRECVBC, // = 0x23, 4e2933c620 2015-04-21 kinaba: NCBADDNAME = 0x30, 4e2933c620 2015-04-21 kinaba: NCBDELNAME, 4e2933c620 2015-04-21 kinaba: NCBRESET, 4e2933c620 2015-04-21 kinaba: NCBASTAT, 4e2933c620 2015-04-21 kinaba: NCBSSTAT, 4e2933c620 2015-04-21 kinaba: NCBCANCEL, 4e2933c620 2015-04-21 kinaba: NCBADDGRNAME, 4e2933c620 2015-04-21 kinaba: NCBENUM, // = 0x37 4e2933c620 2015-04-21 kinaba: NCBUNLINK = 0x70, 4e2933c620 2015-04-21 kinaba: NCBSENDNA, 4e2933c620 2015-04-21 kinaba: NCBCHAINSENDNA, 4e2933c620 2015-04-21 kinaba: NCBLANSTALERT, // = 0x73 4e2933c620 2015-04-21 kinaba: NCBACTION = 0x77, 4e2933c620 2015-04-21 kinaba: NCBFINDNAME, 4e2933c620 2015-04-21 kinaba: NCBTRACE // = 0x79 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const UCHAR ASYNCH = 0x80; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : UCHAR { 4e2933c620 2015-04-21 kinaba: NRC_GOODRET = 0x00, 4e2933c620 2015-04-21 kinaba: NRC_BUFLEN = 0x01, 4e2933c620 2015-04-21 kinaba: NRC_ILLCMD = 0x03, 4e2933c620 2015-04-21 kinaba: NRC_CMDTMO = 0x05, 4e2933c620 2015-04-21 kinaba: NRC_INCOMP, 4e2933c620 2015-04-21 kinaba: NRC_BADDR, 4e2933c620 2015-04-21 kinaba: NRC_SNUMOUT, 4e2933c620 2015-04-21 kinaba: NRC_NORES, 4e2933c620 2015-04-21 kinaba: NRC_SCLOSED, 4e2933c620 2015-04-21 kinaba: NRC_CMDCAN, // = 0x0b 4e2933c620 2015-04-21 kinaba: NRC_DUPNAME = 0x0d, 4e2933c620 2015-04-21 kinaba: NRC_NAMTFUL, 4e2933c620 2015-04-21 kinaba: NRC_ACTSES, // = 0x0f, 4e2933c620 2015-04-21 kinaba: NRC_LOCTFUL = 0x11, 4e2933c620 2015-04-21 kinaba: NRC_REMTFUL, 4e2933c620 2015-04-21 kinaba: NRC_ILLNN, 4e2933c620 2015-04-21 kinaba: NRC_NOCALL, 4e2933c620 2015-04-21 kinaba: NRC_NOWILD, 4e2933c620 2015-04-21 kinaba: NRC_INUSE, 4e2933c620 2015-04-21 kinaba: NRC_NAMERR, 4e2933c620 2015-04-21 kinaba: NRC_SABORT, 4e2933c620 2015-04-21 kinaba: NRC_NAMCONF, // = 0x19 4e2933c620 2015-04-21 kinaba: NRC_IFBUSY = 0x21, 4e2933c620 2015-04-21 kinaba: NRC_TOOMANY, 4e2933c620 2015-04-21 kinaba: NRC_BRIDGE, 4e2933c620 2015-04-21 kinaba: NRC_CANOCCR, // = 0x24 4e2933c620 2015-04-21 kinaba: NRC_CANCEL = 0x26, 4e2933c620 2015-04-21 kinaba: NRC_DUPENV = 0x30, 4e2933c620 2015-04-21 kinaba: NRC_ENVNOTDEF = 0x34, 4e2933c620 2015-04-21 kinaba: NRC_OSRESNOTAV, 4e2933c620 2015-04-21 kinaba: NRC_MAXAPPS, 4e2933c620 2015-04-21 kinaba: NRC_NOSAPS, 4e2933c620 2015-04-21 kinaba: NRC_NORESOURCES, 4e2933c620 2015-04-21 kinaba: NRC_INVADDRESS, // = 0x39 4e2933c620 2015-04-21 kinaba: NRC_INVDDID = 0x3B, 4e2933c620 2015-04-21 kinaba: NRC_LOCKFAIL = 0x3C, 4e2933c620 2015-04-21 kinaba: NRC_OPENERR = 0x3f, 4e2933c620 2015-04-21 kinaba: NRC_SYSTEM = 0x40, 4e2933c620 2015-04-21 kinaba: NRC_PENDING = 0xff 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct ACTION_HEADER { 4e2933c620 2015-04-21 kinaba: union { 4e2933c620 2015-04-21 kinaba: /* transport_id is defined as a ULONG, but both the above constants 4e2933c620 2015-04-21 kinaba: * and the documented description suggest it should be a char[4] 4e2933c620 2015-04-21 kinaba: */ 4e2933c620 2015-04-21 kinaba: ULONG transport_id; 4e2933c620 2015-04-21 kinaba: char[4] c_transport_id; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: USHORT action_code; 4e2933c620 2015-04-21 kinaba: USHORT reserved; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias ACTION_HEADER* PACTION_HEADER; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct ADAPTER_STATUS { 4e2933c620 2015-04-21 kinaba: UCHAR[6] adapter_address; 4e2933c620 2015-04-21 kinaba: UCHAR rev_major; 4e2933c620 2015-04-21 kinaba: UCHAR reserved0; 4e2933c620 2015-04-21 kinaba: UCHAR adapter_type; 4e2933c620 2015-04-21 kinaba: UCHAR rev_minor; 4e2933c620 2015-04-21 kinaba: WORD duration; 4e2933c620 2015-04-21 kinaba: WORD frmr_recv; 4e2933c620 2015-04-21 kinaba: WORD frmr_xmit; 4e2933c620 2015-04-21 kinaba: WORD iframe_recv_err; 4e2933c620 2015-04-21 kinaba: WORD xmit_aborts; 4e2933c620 2015-04-21 kinaba: DWORD xmit_success; 4e2933c620 2015-04-21 kinaba: DWORD recv_success; 4e2933c620 2015-04-21 kinaba: WORD iframe_xmit_err; 4e2933c620 2015-04-21 kinaba: WORD recv_buff_unavail; 4e2933c620 2015-04-21 kinaba: WORD t1_timeouts; 4e2933c620 2015-04-21 kinaba: WORD ti_timeouts; 4e2933c620 2015-04-21 kinaba: DWORD reserved1; 4e2933c620 2015-04-21 kinaba: WORD free_ncbs; 4e2933c620 2015-04-21 kinaba: WORD max_cfg_ncbs; 4e2933c620 2015-04-21 kinaba: WORD max_ncbs; 4e2933c620 2015-04-21 kinaba: WORD xmit_buf_unavail; 4e2933c620 2015-04-21 kinaba: WORD max_dgram_size; 4e2933c620 2015-04-21 kinaba: WORD pending_sess; 4e2933c620 2015-04-21 kinaba: WORD max_cfg_sess; 4e2933c620 2015-04-21 kinaba: WORD max_sess; 4e2933c620 2015-04-21 kinaba: WORD max_sess_pkt_size; 4e2933c620 2015-04-21 kinaba: WORD name_count; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias ADAPTER_STATUS* PADAPTER_STATUS; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct FIND_NAME_BUFFER { 4e2933c620 2015-04-21 kinaba: /* From Win32 API docs 4e2933c620 2015-04-21 kinaba: * 4e2933c620 2015-04-21 kinaba: * length 4e2933c620 2015-04-21 kinaba: * Specifies the length, in bytes, of the FIND_NAME_BUFFER 4e2933c620 2015-04-21 kinaba: * structure. Although this structure always occupies 33 bytes, 4e2933c620 2015-04-21 kinaba: * not all of the structure is necessarily valid. 4e2933c620 2015-04-21 kinaba: * 4e2933c620 2015-04-21 kinaba: * On this basis, should length be initialised? 4e2933c620 2015-04-21 kinaba: */ 4e2933c620 2015-04-21 kinaba: UCHAR length; 4e2933c620 2015-04-21 kinaba: UCHAR access_control; 4e2933c620 2015-04-21 kinaba: UCHAR frame_control; 4e2933c620 2015-04-21 kinaba: UCHAR[6] destination_addr; 4e2933c620 2015-04-21 kinaba: UCHAR[6] source_addr; 4e2933c620 2015-04-21 kinaba: UCHAR[18] routing_info; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias FIND_NAME_BUFFER* PFIND_NAME_BUFFER; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct FIND_NAME_HEADER { 4e2933c620 2015-04-21 kinaba: WORD node_count; 4e2933c620 2015-04-21 kinaba: UCHAR reserved; 4e2933c620 2015-04-21 kinaba: UCHAR unique_group; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias FIND_NAME_HEADER* PFIND_NAME_HEADER; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct LANA_ENUM { 4e2933c620 2015-04-21 kinaba: UCHAR length; 4e2933c620 2015-04-21 kinaba: UCHAR[MAX_LANA+1] lana; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias LANA_ENUM* PLANA_ENUM; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct NAME_BUFFER { 4e2933c620 2015-04-21 kinaba: UCHAR[NCBNAMSZ] name; 4e2933c620 2015-04-21 kinaba: UCHAR name_num; 4e2933c620 2015-04-21 kinaba: UCHAR name_flags; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias NAME_BUFFER* PNAME_BUFFER; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct NCB { 4e2933c620 2015-04-21 kinaba: UCHAR ncb_command; 4e2933c620 2015-04-21 kinaba: UCHAR ncb_retcode; 4e2933c620 2015-04-21 kinaba: UCHAR ncb_lsn; 4e2933c620 2015-04-21 kinaba: UCHAR ncb_num; 4e2933c620 2015-04-21 kinaba: PUCHAR ncb_buffer; 4e2933c620 2015-04-21 kinaba: WORD ncb_length; 4e2933c620 2015-04-21 kinaba: UCHAR[NCBNAMSZ] ncb_callname; 4e2933c620 2015-04-21 kinaba: UCHAR[NCBNAMSZ] ncb_name; 4e2933c620 2015-04-21 kinaba: UCHAR ncb_rto; 4e2933c620 2015-04-21 kinaba: UCHAR ncb_sto; 4e2933c620 2015-04-21 kinaba: extern (Windows) void function(NCB*) ncb_post; 4e2933c620 2015-04-21 kinaba: UCHAR ncb_lana_num; 4e2933c620 2015-04-21 kinaba: UCHAR ncb_cmd_cplt; 9b639cf2d6 2015-05-05 kinaba: UCHAR[10] ncb_reserve; 4e2933c620 2015-04-21 kinaba: HANDLE ncb_event; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias NCB* PNCB; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SESSION_BUFFER { 4e2933c620 2015-04-21 kinaba: UCHAR lsn; 4e2933c620 2015-04-21 kinaba: UCHAR state; 4e2933c620 2015-04-21 kinaba: UCHAR[NCBNAMSZ] local_name; 4e2933c620 2015-04-21 kinaba: UCHAR[NCBNAMSZ] remote_name; 4e2933c620 2015-04-21 kinaba: UCHAR rcvs_outstanding; 4e2933c620 2015-04-21 kinaba: UCHAR sends_outstanding; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SESSION_BUFFER* PSESSION_BUFFER; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SESSION_HEADER { 4e2933c620 2015-04-21 kinaba: UCHAR sess_name; 4e2933c620 2015-04-21 kinaba: UCHAR num_sess; 4e2933c620 2015-04-21 kinaba: UCHAR rcv_dg_outstanding; 4e2933c620 2015-04-21 kinaba: UCHAR rcv_any_outstanding; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SESSION_HEADER* PSESSION_HEADER; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: extern (Windows) UCHAR Netbios(PNCB);