/** * 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): @system: 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 ACTION_HEADER* PACTION_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 ADAPTER_STATUS* PADAPTER_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 FIND_NAME_BUFFER* PFIND_NAME_BUFFER; struct FIND_NAME_HEADER { WORD node_count; UCHAR reserved; UCHAR unique_group; } alias FIND_NAME_HEADER* PFIND_NAME_HEADER; struct LANA_ENUM { UCHAR length; UCHAR[MAX_LANA+1] lana; } alias LANA_ENUM* PLANA_ENUM; struct NAME_BUFFER { UCHAR[NCBNAMSZ] name; UCHAR name_num; UCHAR name_flags; } alias NAME_BUFFER* PNAME_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 NCB* PNCB; struct SESSION_BUFFER { UCHAR lsn; UCHAR state; UCHAR[NCBNAMSZ] local_name; UCHAR[NCBNAMSZ] remote_name; UCHAR rcvs_outstanding; UCHAR sends_outstanding; } alias SESSION_BUFFER* PSESSION_BUFFER; struct SESSION_HEADER { UCHAR sess_name; UCHAR num_sess; UCHAR rcv_dg_outstanding; UCHAR rcv_any_outstanding; } alias SESSION_HEADER* PSESSION_HEADER; extern (Windows) UCHAR Netbios(PNCB);