public string GetMacAddress2() { string str = ""; try { NCB ncb = new NCB { ncb_command = 0x37 }; int cb = Marshal.SizeOf(typeof(LANA_ENUM)); ncb.ncb_buffer = Marshal.AllocHGlobal(cb); ncb.ncb_length = (ushort)cb; char ch = Win32API.Netbios(ref ncb); LANA_ENUM lana_enum = (LANA_ENUM)Marshal.PtrToStructure(ncb.ncb_buffer, typeof(LANA_ENUM)); Marshal.FreeHGlobal(ncb.ncb_buffer); if (ch != '\0') { return(""); } for (int i = 0; i < lana_enum.length; i++) { ASTAT astat; ncb.ncb_command = 50; ncb.ncb_lana_num = lana_enum.lana[i]; if (Win32API.Netbios(ref ncb) != '\0') { return(""); } ncb.ncb_command = 0x33; ncb.ncb_lana_num = lana_enum.lana[i]; ncb.ncb_callname[0] = 0x2a; cb = Marshal.SizeOf(typeof(ADAPTER_STATUS)) + (Marshal.SizeOf(typeof(NAME_BUFFER)) * 30); ncb.ncb_buffer = Marshal.AllocHGlobal(cb); ncb.ncb_length = (ushort)cb; ch = Win32API.Netbios(ref ncb); astat.adapt = (ADAPTER_STATUS)Marshal.PtrToStructure(ncb.ncb_buffer, typeof(ADAPTER_STATUS)); Marshal.FreeHGlobal(ncb.ncb_buffer); if (ch == '\0') { if (i > 0) { str = str + ":"; } str = string.Format("{0,2:X}{1,2:X}{2,2:X}{3,2:X}{4,2:X}{5,2:X}", new object[] { astat.adapt.adapter_address[0], astat.adapt.adapter_address[1], astat.adapt.adapter_address[2], astat.adapt.adapter_address[3], astat.adapt.adapter_address[4], astat.adapt.adapter_address[5] }); } } } catch { } return(str.Replace(' ', '0')); }
public static string GetMacAddress() { string text = ""; try { NCB ncb = default(NCB); ncb.ncb_command = 55; int num = Marshal.SizeOf(typeof(LANA_ENUM)); ncb.ncb_buffer = Marshal.AllocHGlobal(num); ncb.ncb_length = (ushort)num; char num2 = Win32API.Netbios(ref ncb); LANA_ENUM lANA_ENUM = (LANA_ENUM)Marshal.PtrToStructure(ncb.ncb_buffer, typeof(LANA_ENUM)); Marshal.FreeHGlobal(ncb.ncb_buffer); if (num2 != 0) { return(""); } for (int i = 0; i < lANA_ENUM.length; i++) { ncb.ncb_command = 50; ncb.ncb_lana_num = lANA_ENUM.lana[i]; if (Win32API.Netbios(ref ncb) != 0) { return(""); } ncb.ncb_command = 51; ncb.ncb_lana_num = lANA_ENUM.lana[i]; ncb.ncb_callname[0] = 42; num = Marshal.SizeOf(typeof(ADAPTER_STATUS)) + Marshal.SizeOf(typeof(NAME_BUFFER)) * 30; ncb.ncb_buffer = Marshal.AllocHGlobal(num); ncb.ncb_length = (ushort)num; char num3 = Win32API.Netbios(ref ncb); ASTAT aSTAT = default(ASTAT); aSTAT.adapt = (ADAPTER_STATUS)Marshal.PtrToStructure(ncb.ncb_buffer, typeof(ADAPTER_STATUS)); Marshal.FreeHGlobal(ncb.ncb_buffer); if (num3 == '\0') { if (i > 0) { text += ":"; } text = string.Format("{0,2:X}{1,2:X}{2,2:X}{3,2:X}{4,2:X}{5,2:X}", aSTAT.adapt.adapter_address[0], aSTAT.adapt.adapter_address[1], aSTAT.adapt.adapter_address[2], aSTAT.adapt.adapter_address[3], aSTAT.adapt.adapter_address[4], aSTAT.adapt.adapter_address[5]); } } } catch { } return(text.Replace(' ', '0')); }