Int getalllocaladaptermacaddr (std: list > & Mac) { 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 pstutorial z_name [30]; } Adapter; // Reset the lan adapter so that we can begin querying it 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 it in standard, // Colon-delimited form. If (netbios (& ncb) = 0) { Std: vector V6; V6.resize (6 ); For (int I = 0; I <6; I ++) V6 [I] = adapter. adapt. adapter_address [I]; If (v6 [0] = 0) { Std: list >:: 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; } |