乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      如何用VB獲得機(jī)器的MAC地址

       玉雪龍山999 2012-02-14

      如何用VB獲得機(jī)器的MAC地址

      發(fā)布時(shí)間:2008-04-03 10:39:54  來(lái)源:Blog  作者:Blog  點(diǎn)擊:407

        我有一個(gè)asp做的網(wǎng)站,現(xiàn)在想通過(guò)asp調(diào)用嵌入網(wǎng)頁(yè)內(nèi)的一個(gè)程序(控件)讀取客戶(hù)端網(wǎng)卡mac地址,請(qǐng)各位前輩多多幫忙。

      下面這代碼可以做成控件的形式?嵌入網(wǎng)頁(yè)后,通過(guò)asp調(diào)用讀取客戶(hù)端網(wǎng)卡mac地址,請(qǐng)各位前輩多多幫忙,告訴怎么做,我是一個(gè)初學(xué)者,有急用,謝謝!??!

      Option Explicit

      Public Const NCBASTAT As Long = &H33
      Public Const NCBNAMSZ As Long = 16
      Public Const HEAP_ZERO_MEMORY As Long = &H8
      Public Const HEAP_GENERATE_EXCEPTIONS As Long = &H4
      Public Const NCBRESET As Long = &H32

      Public Type NET_CONTROL_BLOCK ’NCB
      ncb_command As Byte
      ncb_retcode As Byte
      ncb_lsn As Byte
      ncb_num As Byte
      ncb_buffer As Long
      ncb_length As Integer
      ncb_callname As String * NCBNAMSZ
      ncb_name As String * NCBNAMSZ
      ncb_rto As Byte
      ncb_sto As Byte
      ncb_post As Long
      ncb_lana_num As Byte
      ncb_cmd_cplt As Byte
      ncb_reserve(Array) As Byte ’ Reserved, must be 0
      ncb_event As Long
      End Type

      Public Type ADAPTER_STATUS
      adapter_address(5) As Byte
      rev_major As Byte
      reserved0 As Byte
      adapter_type As Byte
      rev_minor As Byte
      duration As Integer
      frmr_recv As Integer
      frmr_xmit As Integer
      iframe_recv_err As Integer
      xmit_aborts As Integer
      xmit_success As Long
      recv_success As Long
      iframe_xmit_err As Integer
      recv_buff_unavail As Integer
      t1_timeouts As Integer
      ti_timeouts As Integer
      Reserved1 As Long
      free_ncbs As Integer
      max_cfg_ncbs As Integer
      max_ncbs As Integer
      xmit_buf_unavail As Integer
      max_dgram_size As Integer
      pending_sess As Integer
      max_cfg_sess As Integer
      max_sess As Integer
      max_sess_pkt_size As Integer
      name_count As Integer
      End Type
      End Type

      Public Type NAME_BUFFER
      name As String * NCBNAMSZ
      name_num As Integer
      name_flags As Integer
      End Type

      Public Type ASTAT
      adapt As ADAPTER_STATUS
      NameBuff(30) As NAME_BUFFER
      End Type

      Public Declare Function Netbios Lib "netapi32.dll" _
      (pncb As NET_CONTROL_BLOCK) As Byte

      Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
      (hpvDest As Any, ByVal _
      hpvSource As Long, ByVal _
      cbCopy As Long)

      Public Declare Function GetProcessHeap Lib "kernel32" () As Long


      Public Declare Function HeapAlloc Lib "kernel32" _
      (ByVal hHeap As Long, ByVal dwFlags As Long, _
      ByVal dwBytes As Long) As Long

      Public Declare Function HeapFree Lib "kernel32" _
      (ByVal hHeap As Long, _
      ByVal dwFlags As Long, _
      lpMem As Any) As Long


      Public Function GetMACAddress() As String

      ’retrieve the MAC Address for the network controller
      ’installed, returning a formatted string

      Dim tmp As String
      Dim pASTAT As Long
      Dim NCB As NET_CONTROL_BLOCK
      Dim AST As ASTAT

      ’The IBM NetBIOS 3.0 specifications defines four basic
      ’NetBIOS environments under the NCBRESET command. Win32
      ’follows the OS/2 Dynamic Link Routine (DLR) environment.
      ’This means that the first NCB issued by an application
      ’must be a NCBRESET, with the exception of NCBENUM.
      ’The Windows NT implementation differs from the IBM
      ’NetBIOS 3.0 specifications in the NCB_CALLNAME field.
      NCB.ncb_command = NCBRESET
      Call Netbios(NCB)

      ’To get the Media Access Control (MAC) address for an
      ’ethernet adapter programmatically, use the Netbios()
      ’NCBASTAT command and provide a "*" as the name in the
      ’NCB.ncb_CallName field (in a 16-chr string).
      NCB.ncb_callname = "* "
      NCB.ncb_command = NCBASTAT

      ’For machines with multiple network adapters you need to
      ’enumerate the LANA numbers and perform the NCBASTAT
      ’command on each. Even when you have a single network
      ’adapter, it is a good idea to enumerate valid LANA numbers
      ’first and perform the NCBASTAT on one of the valid LANA
      ’numbers. It is considered bad programming to hardcode the
      ’LANA number to 0 (see the comments section below).
      NCB.ncb_lana_num = 0
      NCB.ncb_length = Len(AST)

      pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS _
      Or HEAP_ZERO_MEMORY, NCB.ncb_length)

      If pASTAT = 0 Then
      Debug.Print "memory allocation failed!"
      Exit Function
      End If

      NCB.ncb_buffer = pASTAT
      Call Netbios(NCB)

      CopyMemory AST, NCB.ncb_buffer, Len(AST)

      tmp = Format$(Hex(AST.adapt.adapter_address(0)), "00") & " " & _
      Format$(Hex(AST.adapt.adapter_address(1)), "00") & " " & _
      Format$(Hex(AST.adapt.adapter_address(2)), "00") & " " & _
      Format$(Hex(AST.adapt.adapter_address(3)), "00") & " " & _
      Format$(Hex(AST.adapt.adapter_address(4)), "00") & " " & _
      Format$(Hex(AST.adapt.adapter_address(5)), "00")


      HeapFree GetProcessHeap(), 0, pASTAT

      GetMACAddress = tmp

      End Function
      ’--end block--’


      Form Code

      To a form add a command button (Command1), and a text box (Text1). Labels and
      frames are optional. Add the following to the command button:

      ------------------------------------------------------------------------------
      --


      Option Explicit

      Private Sub Command1_Click()

      Text1 = GetMACAddress()

      End Sub
      ’--end block--’


      Comments

      Other hardware and software may be assigned their own MAC addresses. For
      example, a modem can have a MAC address. Also, a RAS client or server can
      install "dummy" network adapters that correspond to a dialup or serial
      connection. Normally, these MAC addresses are randomly generated. If an
      adapter status is called on a LANA that corresponds to one of these adapters
      when no connection is present, Netbios returns error 0x34 (NRC_ENVNOTDEF)
      even if a reset was previously performed.
      With the NetBEUI and IPX transports, the same information can be obtained at
      a command prompt by using:

      net config workstation

      The ID given is the MAC address.

      How to Use LANA Numbers in a 32-bit Environment
      Last reviewed: August 7, 1ArrayArray6
      Article ID: Q138037
      The information in this article applies to:
      Microsoft Win32 Software Development Kit (SDK) versions 3.1, 3.5, 3.51, 4.0

      SUMMARY
      NetBIOS uses the concept of a LANA (LAN adapter number) that allows you to
      write transport-independent NetBIOS applications. This article describes what
      a LANA is and recommends an approach to writing NetBIOS applications.

      MORE INFORMATION
      A LANA is a field of the NetBIOS NCB structure. In IBM’s NetBIOS 3.0
      specification, a LANA was used to specify a particular network adapter, as
      NetBIOS then supported up to two network adapters in one PC computer.
      Specifying a LANA of zero directed a request to the first adapter, and
      specifying a LANA of one directed a request to the second adapter.

      Originally, IBM sent NetBIOS packets over the NetBEUI protocol, also known as
      the NetBIOS Frames protocol. This was the only transport NetBIOS could use to
      send data across the network. In other words, each network adapter had only
      one protocol to send and receive NetBIOS packets.

      Because most computers have only one network adapter, many MS-DOS-based
      applications send all their requests to a LANA value of zero (also called
      simply ’LANA zero’). If a second network adapter is installed, some programs
      allow the user to configure the application to use LANA one instead. As a
      result, LANA zero became a default setting, though it was never intended to
      be a default.

      Today’s network technology allows NetBIOS to use transports other than
      NetBEUI. Microsoft has extended the meaning of LANA to indicate a specific
      transport on a specific adapter. For example, if you have two network
      adapters, and have IPX/SPX and NetBEUI transports installed, you have four
      LANAs. The LANAs may or may not be sequential, and there is no systematic way
      to identify which transport maps to which LANA.

      In addition to extending the meaning of a LANA, Microsoft also added an NCB
      command (NCBENUM) that returns an array of available LANA numbers. As an
      example, the LANA_ENUM structure filled by NCBENUM might hold an array with
      values 0, 3, 5, and 6. Zero might map to IPX/SPX on the first adapter, three
      might map to NETBEUI on a second adapter, and so on.


      In Windows NT and Windows Array5, network adapters consist of physical adapters
      (like a 3Com Etherlink II) and software adapters (like the Dial Up Adapter).
      In addition, a user may have TCP/IP, NETBEUI, IPX/SPX, and other transports
      installed, all of which have NetBIOS support.

      For Windows NT, LANAs are configurable through the control panel. Choose the
      Network applet, choose the NetBIOS Interface component, then choose
      Configure. A dialog appears that allows you to edit the LANAs.

      For Windows Array5, you may only set LANA zero, the default protocol, and if no
      protocol is set as default, there won’t be a LANA zero. You can set the
      default protocol in the control panel. Choose the Network applet, choose the
      protocol you want as default, choose Properties, the Advanced tab, and
      finally check ’Set this protocol to be the default protocol’.

      LANAs may seem like a constraint that your application must work around.
      However, making your application ignorant of how users want to configure
      their machines is a powerful idea, and one that makes life easier for your
      customers.

      The best way to write a NetBIOS application is to support all LANAs, and
      establish connections over any LANA. A good approach is outlined in the
      following steps:

      Enumerate the LANAs by submitting NCBENUM.
      Reset each LANA by submitting one NCBRESET per LANA.
      Add your local NetBIOS name to each LANA. The name may be the same on each
      LANA.
      Connect using any LANA:
      For servers, submit an NCBLISTEN on each LANA. If necessary, cancel any
      outstanding listen after the first listen is satisfied.
      For clients, submit an NCBFINDNAME (Windows NT only) or an NCBCALL (either
      Windows NT or Windows Array5) on each LANA. The first successful find name or
      call will indicate which LANA to use. When using NCBCALL instead of
      NCBFINDNAME, you must cancel any pending NCBCALLs and hang up the extra
      completed calls (when two or more calls are successful.)
      It is a good idea to submit NCBADDNAME, NCBLISTEN, NCBFINDNAME, and NCBCALL
      asynchronously. Asynchronous requests will be processed almost in parallel on
      each transport.

      This architecture is quite beneficial. Once your application is written to
      establish connections in this manner, it will support any transport that
      NetBIOS can use. As a result, your customers will not have to configure
      anything within your application, and your application will not be affected
      by dynamic LANAs such as dial-up adapters or plug-and-play hardware.

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多