| int getalllocaladaptermacaddr (std::list<std::vector<unsigned char> >& mac) { NCB NCB; Lana_enum adapterlist; memset (&NCB, 0, sizeof (NCB)); Ncb.ncb_command = Ncbenum; Ncb.ncb_buffer = (unsigned char *) &adapterlist; ncb.ncb_length = sizeof (adapterlist); NetBIOS (&NCB); Mac.resize (0); for (int i = 0; i < adapterlist.length; ++i) { struct ASTAT { Adapter_status adapt; Name_buffer PS Tutorial z_name[30]; } adapter; Reset the LAN adapter so we can begin querying it NCB NCB; memset (&NCB, 0, sizeof (NCB)); Ncb.ncb_command = Ncbreset; Ncb.ncb_lana_num = Adapterlist.lana[i]; if (NetBIOS (&NCB)!= Nrc_goodret) Continue Prepare to get the adapter status block memset (&NCB, 0, sizeof (NCB)); Ncb.ncb_command = Ncbastat; Ncb.ncb_lana_num = adapterlist.lana[I]; strcpy ((char *) ncb.ncb_callname, "*"); memset (&adapter, 0, sizeof (adapter)); Ncb.ncb_buffer = (unsigned char *) &adapter; Ncb.ncb_length = sizeof (adapter); Get the adapter's info and, if this works, return to it in standard, colon-delimited form. if (NetBIOS (&NCB) = = 0) { std::vector<unsigned char> V6; V6.resize (6); for (int i=0; i<6; i++) V6[i] = adapter.adapt.adapter_address[i]; if (v6[0] = = 0) { std::list<std::vector<unsigned char> >::iterator i = Mac.begin (); for (; I!=mac.end (); i++) if (*i = = V6) Break if (I==mac.end ()) Mac.push_back (V6); } } Else Break } return 0; } |