Exemple #1
0
        public static string GetMacAddress()
        {
            var      addr = "";
            int      cb;
            Astat    adapter;
            var      ncb = new Ncb();
            char     uRetCode;
            LanaEnum lenum;

            ncb.ncb_command = (byte)Ncbconst.Ncbenum;
            cb             = Marshal.SizeOf(typeof(LanaEnum));
            ncb.ncb_buffer = Marshal.AllocHGlobal(cb);
            ncb.ncb_length = (ushort)cb;
            uRetCode       = Win32Api.Netbios(ref ncb);
            lenum          = (LanaEnum)Marshal.PtrToStructure(ncb.ncb_buffer, typeof(LanaEnum));
            Marshal.FreeHGlobal(ncb.ncb_buffer);
            if (uRetCode != (short)Ncbconst.NrcGoodret)
            {
                return("");
            }

            for (var i = 0; i < lenum.length; i++)
            {
                ncb.ncb_command  = (byte)Ncbconst.Ncbreset;
                ncb.ncb_lana_num = lenum.lana[i];
                uRetCode         = Win32Api.Netbios(ref ncb);
                if (uRetCode != (short)Ncbconst.NrcGoodret)
                {
                    return("");
                }

                ncb.ncb_command     = (byte)Ncbconst.Ncbastat;
                ncb.ncb_lana_num    = lenum.lana[i];
                ncb.ncb_callname[0] = (byte)'*';
                cb             = Marshal.SizeOf(typeof(AdapterStatus)) + Marshal.SizeOf(typeof(NameBuffer)) * (int)Ncbconst.NumNamebuf;
                ncb.ncb_buffer = Marshal.AllocHGlobal(cb);
                ncb.ncb_length = (ushort)cb;
                uRetCode       = Win32Api.Netbios(ref ncb);
                adapter.adapt  = (AdapterStatus)Marshal.PtrToStructure(ncb.ncb_buffer, typeof(AdapterStatus));
                Marshal.FreeHGlobal(ncb.ncb_buffer);

                if (uRetCode == (short)Ncbconst.NrcGoodret)
                {
                    if (i > 0)
                    {
                        addr += "-";
                    }
                    addr = string.Format("{0,2:X}-{1,2:X}-{2,2:X}-{3,2:X}-{4,2:X}-{5,2:X}",
                                         adapter.adapt.adapter_address[0],
                                         adapter.adapt.adapter_address[1],
                                         adapter.adapt.adapter_address[2],
                                         adapter.adapt.adapter_address[3],
                                         adapter.adapt.adapter_address[4],
                                         adapter.adapt.adapter_address[5]);
                }
            }
            return(addr);
        }
Exemple #2
0
 public static extern char Netbios(ref Ncb ncb);