亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? motelist-win32.cpp

?? 無線通信的主要編程軟件,是無線通信工作人員的必備工具,關天相關教程我會在后續傳上.
?? CPP
字號:
// $Id: motelist-win32.cpp,v 1.1 2004/05/30 21:10:40 cssharp Exp $/* "Copyright (c) 2000-2003 The Regents of the University of California.   * All rights reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement * is hereby granted, provided that the above copyright notice, the following * two paragraphs and the author appear in all copies of this software. *  * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY * OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *  * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." */// @author Cory Sharp <cssharp@eecs.berkeley.edu>#include <iostream>#include <string>#include <vector>#include <stdexcept>#include <list>#include <windows.h>namespace TelosList{using std::cout;using std::endl;typedef std::string String;typedef const String& StringRef;typedef std::vector<String> VecString;struct RegValue{  typedef long long int_type;  String name;  String data;  int_type data_int;  int data_type;  RegValue()    : data_int(0), data_type(0)  {  }  RegValue( StringRef _name, StringRef _data, int _type )    : name(_name), data(_data), data_int(atoi(data.c_str())), data_type(_type)  {  }  RegValue( StringRef _name, int_type _data, int _type )    : name(_name), data(), data_int(_data), data_type(_type)  {    char buf[16];    int nbuf = sprintf( buf, "%lld", data_int );    data = String( buf, buf+nbuf );  }  RegValue( StringRef _name, const char* _data, DWORD _dlen, int _type )    : name(_name), data_type(_type)  {    char buf[256];    int nbuf = 0;    switch( data_type )    {      case REG_BINARY:      case REG_EXPAND_SZ:      case REG_MULTI_SZ:      case REG_SZ:	data = String( _data, _dlen );	data_int = atoi( _data );	break;      case REG_NONE:	break;      case REG_DWORD:	data_int = *(DWORD*)_data;	nbuf = sprintf( buf, "%d", *(DWORD*)_data );	data = String( buf, buf+nbuf );	break;      case REG_QWORD:	data_int = *(long long*)_data;	nbuf = sprintf( buf, "%lld", *(long long*)_data );	data = String( buf, buf+nbuf );	break;      default:	throw std::runtime_error( "unsupported data type in " + name );    }  }};class RegKey;typedef std::vector<RegKey> VecRegKey;typedef std::vector<RegValue> VecRegValue;class RegKey{  HKEY m_hkey;  String m_name;  void openKey( HKEY hkey, StringRef subkey )  {    LONG result = RegOpenKeyEx( hkey, subkey.c_str(), 0, (KEY_READ&~KEY_NOTIFY), &m_hkey );    if( result != ERROR_SUCCESS )      throw std::runtime_error( "could not open key " + m_name );  }  void prefixName( HKEY root )  {    if( root == HKEY_LOCAL_MACHINE )      m_name = "HKLM\\" + m_name;  }public:  ~RegKey()  {    RegCloseKey(m_hkey);    m_hkey = (HKEY)INVALID_HANDLE_VALUE;  }  RegKey( HKEY hkey, StringRef subkey )    : m_hkey((HKEY)INVALID_HANDLE_VALUE), m_name(subkey)  {    prefixName( hkey );    openKey( hkey, subkey );  }  RegKey( const RegKey& key, StringRef subkey )    : m_hkey((HKEY)INVALID_HANDLE_VALUE), m_name(key.m_name+"\\"+subkey)  {    openKey( key.m_hkey, subkey );  }  RegKey getSubkey( StringRef subkey ) const  {    return RegKey( m_hkey, subkey );  }  RegKey operator[]( StringRef subkey ) const  {    return getSubkey( subkey );  }  RegValue operator()( StringRef value ) const  {    return getValue( value );  }  RegValue getValue( StringRef value ) const;  VecString getSubkeyNames() const;  VecRegValue getValues() const;};VecString RegKey::getSubkeyNames() const{  VecString v;  DWORD i = 0;  while(true)  {    DWORD len = 4096;    char name[len];    LONG result = RegEnumKeyEx( m_hkey, i++, name, &len, NULL, NULL, NULL, NULL );    if( result == ERROR_NO_MORE_ITEMS )      break;    if( result != ERROR_SUCCESS )      throw std::runtime_error( "error iterating keys in " + m_name );    v.push_back( String(name, name+len) );  }  return v;}RegValue RegKey::getValue( StringRef value ) const{  DWORD dtype = 0;  DWORD dlen = 4096;  char data[dlen];  LONG result = RegQueryValueEx( m_hkey, value.c_str(), NULL, &dtype, (BYTE*)data, &dlen );  if( result != ERROR_SUCCESS )    throw std::runtime_error( "error iterating values in " + m_name );  return RegValue( value, data, dlen, dtype );}VecRegValue RegKey::getValues() const{  VecRegValue v;  DWORD i = 0;  while(true)  {    DWORD nlen = 4096;    DWORD dlen = 4096;    char name[nlen];    char data[dlen];    DWORD dtype = 0;    LONG result = RegEnumValue( m_hkey, i++, name, &nlen, NULL, &dtype, (BYTE*)data, &dlen );    dtype = REG_NONE;    dlen = 0;    if( result == ERROR_NO_MORE_ITEMS )      break;    if( result != ERROR_SUCCESS )      throw std::runtime_error( "error iterating values in " + m_name );    v.push_back( RegValue( String(name,name+nlen), data, dlen, dtype ) );  }  return v;}struct Device{  String id;  String comm;  String info;  int sortnum;  int refcount;  Device(): sortnum(0), refcount(0) { }  bool operator<( const Device& a ) const  {    if( sortnum < a.sortnum )      return true;        if( sortnum == a.sortnum )      return (id < a.id);    return false;  }};typedef std::list<Device> ListDevice;String join( StringRef sep, const VecString& vs ){  String j;  VecString::const_iterator i = vs.begin();  if( i != vs.end() ) j = *i++;  while( i != vs.end() ) j += sep + *i++;  return j;}String join( StringRef sep, const VecRegValue& vrv ){  String j;  VecRegValue::const_iterator i = vrv.begin();  if( i != vrv.end() ) { j = i->name+"="+i->data; i++; }  while( i != vrv.end() ) { j = i->name+"="+i->data; i++; }  return j;}VecString split( const char* chars, StringRef str ){  VecString vs;  String::size_type n0 = 0;  String::size_type n1 = str.find_first_of( chars, 0 );  vs.push_back( str.substr( n0, n1 ) );  while( n1 != String::npos )  {    n0 = n1+1;    n1 = str.find_first_of( chars, n0 );    if( n1 != String::npos ) vs.push_back( str.substr( n0, n1-n0 ) );    else vs.push_back( str.substr( n0 ) );  }  return vs;}int getRefCount( const RegKey& dclass, const RegKey& key ){  int refcnt = 0;  try  {    String symstr = key["Device Parameters"]("SymbolicName").data;    VecString sym = split( "\\#", symstr );    if( sym.size() >= 4 )    {      sym.erase( sym.begin(), sym.begin()+sym.size()-4 );      String devstr = sym[3] +"\\##?#" + join("#",sym) + "\\Control";      RegKey ctrl = dclass[devstr];      refcnt = strtol( ctrl("ReferenceCount").data.c_str(), NULL, 0 );    }  }  catch( std::runtime_error e ) { }  return refcnt;}ListDevice getDevices(){  ListDevice devs;  String ccs = "SYSTEM\\CurrentControlSet\\";  RegKey dclass( HKEY_LOCAL_MACHINE, ccs+"Control\\DeviceClasses" );  RegKey ftdibus( HKEY_LOCAL_MACHINE, ccs+"Enum\\FTDIBUS" );  RegKey usb6001( HKEY_LOCAL_MACHINE, ccs+"Enum\\USB\\Vid_0403&Pid_6001" );  VecString fdev = ftdibus.getSubkeyNames();  for( VecString::const_iterator i=fdev.begin(); i!=fdev.end(); i++ )  {    if( i->substr(0,18) == String("VID_0403+PID_6001+") )    {      Device d;      d.id = i->substr(18,8);      try      {	RegKey devkey = ftdibus[*i];	VecString devsub = devkey.getSubkeyNames();	d.comm = devkey[devsub[0]+"\\Device Parameters"]("PortName").data;      }      catch( std::runtime_error e )      {	d.comm = "no_comm";      }      try { d.info = usb6001[d.id]("LocationInformation").data; }      catch( std::runtime_error e ) { }      try { d.refcount = getRefCount( dclass, usb6001[d.id] ); }      catch( std::runtime_error e ) { }      String::size_type ncomm = d.comm.find_first_of("0123456789");      if( ncomm != String::npos )	d.sortnum = atoi( d.comm.substr(ncomm).c_str() );      devs.push_back(d);    }  }  return devs;}void prettyPrintDevices( const ListDevice& devs ){  const char* fmt = "%-10s %-10s %s\n";  printf( fmt, "Reference", "CommPort", "Description" );  printf( "---------- ---------- ----------------------------------------\n" );  for( ListDevice::const_iterator i=devs.begin(); i!=devs.end(); i++ )  {    String comm = i->comm;    if( i->refcount == 0 )    {      char buf[256];      int n = snprintf( buf, 255, " (%s)", i->comm.c_str() );      comm = String( buf, buf+n );    }    printf( fmt, i->id.c_str(), comm.c_str(), i->info.c_str() );  }}void printDevices( const ListDevice& devs ){  for( ListDevice::const_iterator i=devs.begin(); i!=devs.end(); i++ )  {    cout << i->id << "," << i->comm << ","	 << i->refcount << "," << i->info << endl;  }}ListDevice getActiveDevices( const ListDevice& devs ){  ListDevice active;  for( ListDevice::const_iterator i=devs.begin(); i!=devs.end(); i++ )  {    if( i->refcount > 0 )      active.push_back( *i );  }  return active;}void usage(){  cout << "usage: motelist [-l] [-c]\n"       << "\n"       << "  $Revision: 1.1 $ $Date: 2004/05/30 21:10:40 $\n"       << "\n"       << "options:\n"       << "  -h  display this help\n"       << "  -l  long format, also display disconnected devices\n"       << "  -c  compact format, not pretty but easier for parsing\n"       << std::endl;}int main( VecString args ){  bool showall = false;  bool compact = false;  //bool recovery = false;  for( VecString::size_type n=1; n!=args.size(); n++ )  {    StringRef opt = args[n];    if( opt == "-h" ) { usage(); return 0; }    else if( opt == "-l" ) { showall = true; }    else if( opt == "-c" ) { compact = true; }    else if( opt == "-c" ) { compact = true; }    else { usage(); throw std::runtime_error("unknown command line option "+opt); }  }  ListDevice devs = getDevices();  if( showall == false )    devs = getActiveDevices( devs );  devs.sort();  if( devs.empty() )    { cout << "No devices found." << endl; return 2; }  else if( compact )    printDevices( devs );  else    prettyPrintDevices( devs );  return 0;}}//namespace TelosListint main( int argc, char* argv[] ){  try  {    return TelosList::main( TelosList::VecString(argv,argv+argc) );  }  catch( std::runtime_error e )  {    std::cerr << "error, " << e.what() << std::endl;  }  return 1;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品高清在线| 久久精品亚洲精品国产欧美| 国产成人精品免费一区二区| 日本系列欧美系列| 亚洲第一福利视频在线| 亚洲视频一二三| 亚洲视频一二区| 亚洲女同一区二区| 亚洲一区在线看| 一区二区三区加勒比av| 亚洲精品一二三| 伊人夜夜躁av伊人久久| 亚洲一区二区三区视频在线| 亚洲精品伦理在线| 亚洲一二三四在线观看| 亚洲成在线观看| 三级影片在线观看欧美日韩一区二区| 亚洲一区二区免费视频| 亚洲动漫第一页| 蜜臀av性久久久久蜜臀aⅴ流畅 | 日韩欧美国产一区二区在线播放 | 亚洲一区日韩精品中文字幕| 亚洲一区免费视频| 日韩专区欧美专区| 久久精品噜噜噜成人av农村| 国产剧情一区在线| av在线不卡电影| 欧美丝袜自拍制服另类| 欧美福利视频一区| 精品福利在线导航| 国产精品视频免费| 亚洲一线二线三线视频| 老司机免费视频一区二区三区| 国产一区在线精品| 91网页版在线| 欧美不卡在线视频| 国产精品麻豆视频| 三级久久三级久久| 风间由美性色一区二区三区| 91福利视频久久久久| 欧美电影免费观看高清完整版 | 国产高清不卡一区| 99久久亚洲一区二区三区青草 | 亚洲国产精品一区二区久久| 免费观看日韩av| 成人免费观看视频| 欧美一级片免费看| 自拍偷拍欧美精品| 久久精品72免费观看| 99re在线精品| 久久综合狠狠综合久久综合88 | 在线免费观看不卡av| 制服.丝袜.亚洲.中文.综合| 国产欧美一区二区三区沐欲 | 色综合天天视频在线观看 | 久久99精品国产麻豆婷婷 | 亚洲成人中文在线| 成人中文字幕电影| 日韩欧美aaaaaa| 亚洲成人综合视频| 99国产精品久| 国产婷婷色一区二区三区四区| 日韩精品五月天| 色拍拍在线精品视频8848| 久久精品一区四区| 精品一区二区在线视频| 欧美伊人久久大香线蕉综合69| 国产欧美精品在线观看| 美国十次综合导航| 精品视频在线免费观看| 亚洲男人的天堂网| 成人国产精品免费| 中文成人综合网| 国产福利精品导航| 久久精品男人天堂av| 久久99蜜桃精品| 日韩视频一区在线观看| 天使萌一区二区三区免费观看| 欧美中文字幕亚洲一区二区va在线| 日本一二三四高清不卡| 国产成人av福利| 国产清纯白嫩初高生在线观看91 | 精品日韩99亚洲| 蜜臀久久99精品久久久久宅男| 欧美日韩你懂的| 天天影视色香欲综合网老头| 在线免费精品视频| 亚洲一区二区不卡免费| 欧美色图天堂网| 五月天激情综合| 欧美精品一卡两卡| 蜜臀国产一区二区三区在线播放| 91精品国产综合久久精品图片| 丝袜美腿亚洲一区二区图片| 欧美精品在线观看播放| 麻豆国产精品777777在线| 久久亚洲私人国产精品va媚药| 麻豆成人av在线| 日韩精品一区二区三区蜜臀| 国产成人av一区二区三区在线观看| 国产喷白浆一区二区三区| 91一区在线观看| 亚洲福利视频一区| 日韩精品中午字幕| 成人黄色在线网站| 亚洲一区二区三区视频在线播放| 欧美人伦禁忌dvd放荡欲情| 男男gaygay亚洲| 国产亚洲精品中文字幕| 日本乱人伦aⅴ精品| 三级一区在线视频先锋 | 日韩免费成人网| 国产精品一区二区视频| 国产精品美女久久福利网站| 欧美视频完全免费看| 激情伊人五月天久久综合| 国产色产综合色产在线视频| 在线视频中文字幕一区二区| 老司机免费视频一区二区| 欧美激情在线看| 在线电影欧美成精品| 国产91综合网| 日本强好片久久久久久aaa| 日本一区二区三区四区| 欧美少妇性性性| 国产1区2区3区精品美女| 午夜婷婷国产麻豆精品| 国产日韩欧美制服另类| 欧美精品日韩一本| 不卡在线视频中文字幕| 日本在线不卡一区| 中文字幕佐山爱一区二区免费| 69堂亚洲精品首页| 99riav一区二区三区| 精品在线亚洲视频| 亚洲精品国产第一综合99久久| 精品日韩一区二区| 欧美精品一二三| 色国产精品一区在线观看| 国产精品一区二区免费不卡| 日韩**一区毛片| 一区二区理论电影在线观看| 国产精品天美传媒| 欧美精品一区二区三区在线播放| 欧美日韩免费高清一区色橹橹 | 国产成人无遮挡在线视频| 国产成人午夜片在线观看高清观看| 亚洲在线视频一区| 中文字幕乱码日本亚洲一区二区 | 666欧美在线视频| 在线视频国内自拍亚洲视频| www.欧美色图| jlzzjlzz国产精品久久| 福利电影一区二区三区| 国产伦精品一区二区三区免费| 秋霞午夜鲁丝一区二区老狼| 亚洲一区二区在线免费观看视频| 亚洲免费观看高清完整版在线观看熊| 日本一区二区三区在线观看| 久久精品人人做人人爽人人| 日韩免费性生活视频播放| 91麻豆精品国产| 91精品国产免费久久综合| 欧美午夜一区二区三区免费大片| 91啪在线观看| 色中色一区二区| 91久久免费观看| 色素色在线综合| 欧美日韩在线一区二区| 欧美日韩成人综合天天影院 | 欧美性受极品xxxx喷水| 91女人视频在线观看| 色伊人久久综合中文字幕| 在线免费精品视频| 欧美日韩精品一区二区三区四区| 欧美影视一区在线| 欧美日韩精品一区视频| 欧美一区二区三区不卡| 精品区一区二区| 国产欧美日韩一区二区三区在线观看| 日本一区二区成人在线| 亚洲精品中文在线| 免费在线欧美视频| 国产老肥熟一区二区三区| 91在线观看视频| 欧美片网站yy| 久久久午夜精品| 亚洲精品亚洲人成人网在线播放| 午夜精品久久久久久不卡8050| 精品一区二区三区在线播放| 国产成人精品一区二| 欧美综合欧美视频| 日韩免费在线观看| 中文字幕中文乱码欧美一区二区| 亚洲激情第一区| 国产一区二区三区观看| 91老师国产黑色丝袜在线| 日韩一二三四区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 亚洲国产精品一区二区久久恐怖片|