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