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

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

    • 分享

      如何用VC 開發(fā)讀取網(wǎng)卡MAC地址的程序...

       SpringEmpire 2007-09-11
      在實際的應用系統(tǒng)中,我們往往會需要在程序運行時獲取當前機器的網(wǎng)卡的MAC地址,以便作為某種標識之用,如控制程序的合法性等。下文就如何用Microsoft Visual C++ 6.0開發(fā)這樣的程序演示如何實現(xiàn)其要點。

      ---- 這里采用的方法是通過Windows 9x/NT/Win2000中內(nèi)置的NetApi32.DLL的功能來實現(xiàn)的,首先通過發(fā)送NCBENUM命令獲取網(wǎng)卡的數(shù)目和每個網(wǎng)卡的內(nèi)部編號,然后對每個網(wǎng)卡標號發(fā)送NCBASTAT命令獲取其MAC地址。注意:這里的網(wǎng)卡是指捆綁了NetBeui協(xié)議的通信協(xié)議棧,可以在網(wǎng)卡的屬性處查看到。

      ---- 請運行VC++,打開一個新的工程,選擇創(chuàng)建一個Win32 Console程序,然后按下文輸入代碼,并請參見其中的注釋:

      #include "stdafx.h"

      #include < windows.h >
      #include < wincon.h >
      #include < stdlib.h >
      #include < stdio.h >
      #include < time.h >

      ---- // 因為是通過NetAPI來獲取網(wǎng)卡信息,所以需要包含其題頭文件nb30.h #include < nb30.h >
      typedef struct _ASTAT_
      {
      ADAPTER_STATUS adapt;
      NAME_BUFFER NameBuff [30];
      }ASTAT, * PASTAT;

      ASTAT Adapter;

      ---- // 定義一個存放返回網(wǎng)卡信息的變量
      ---- // 輸入?yún)?shù):lana_num為網(wǎng)卡編號,一般地,從0開始,但在Windows 2000中并不一定是連續(xù)分配的

      void getmac_one (int lana_num)
      {
      NCB ncb;
      UCHAR uRetCode;

      memset( &ncb, 0, sizeof(ncb) );
      ncb.ncb_command = NCBRESET;
      ncb.ncb_lana_num = lana_num;
      // 指定網(wǎng)卡號

      ---- // 首先對選定的網(wǎng)卡發(fā)送一個NCBRESET命令,以便進行初始化
      uRetCode = Netbios( &ncb );
      printf( "The NCBRESET return code is:
      0x%x /n", uRetCode );

      memset( &ncb, 0, sizeof(ncb) );
      ncb.ncb_command = NCBASTAT;
      ncb.ncb_lana_num = lana_num; // 指定網(wǎng)卡號

      strcpy( (char *)ncb.ncb_callname,
      "* " );
      ncb.ncb_buffer = (unsigned char *) &Adapter;

      ---- // 指定返回的信息存放的變量
      ncb.ncb_length = sizeof(Adapter);

      ---- // 接著,可以發(fā)送NCBASTAT命令以獲取網(wǎng)卡的信息
      uRetCode = Netbios( &ncb );
      printf( "The NCBASTAT
      return code is: 0x%x /n", uRetCode );
      if ( uRetCode == 0 )
      {

      ---- // 把網(wǎng)卡MAC地址格式化成常用的16進制形式,如0010-A4E4-5802
      printf( "The Ethernet Number[%d]
      is: %02X%02X-%02X%02X-%02X%02X/n",
      lana_num,
      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] );
      }
      }

      int main(int argc, char* argv[])
      {
      NCB ncb;
      UCHAR uRetCode;
      LANA_ENUM lana_enum;

      memset( &ncb, 0, sizeof(ncb) );
      ncb.ncb_command = NCBENUM;

      ncb.ncb_buffer = (unsigned char *) &lana_enum;
      ncb.ncb_length = sizeof(lana_enum);

      ---- // 向網(wǎng)卡發(fā)送NCBENUM命令,以獲取當前機器的網(wǎng)卡信息,如有多少個網(wǎng)卡、每張網(wǎng)卡的編號等
      uRetCode = Netbios( &ncb );
      printf( "The NCBENUM return
      code is:
      0x%x /n", uRetCode );
      if ( uRetCode == 0 )
      {
      printf( "Ethernet Count is : %d/n/n", lana_enum.length);

      ---- // 對每一張網(wǎng)卡,以其網(wǎng)卡編號為輸入編號,獲取其MAC地址
      for ( int i=0; i< lana_enum.length; ++i)
      getmac_one( lana_enum.lana[i]);
      }
      return 0;
      }

      ---- 此時,按F7編譯、直至通過,按F5運行即可。
      ---- 這段代碼可以直接嵌入相關(guān)的應用系統(tǒng)之中,或封裝成.DLL或COM控件,以便可以在Visual Basic、Visual Foxpro、Power Builder或Delphi等其他程序中調(diào)用  

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多