首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 认证考试-> Adobe认证
遍历设备管理器的设备-.NET教程,评论及其它
作者:网友供稿 点击:287
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
代码源于codeproject,修改增加了读取设备标识的功能。bbs的朋友需要,顺便放到这里来

using system;
using system.runtime.interopservices;
using system.text;


namespace devclasses
{
/// <summary>
/// summary description for class.
/// </summary>
class deviceclasses
{
/// <summary>
/// the main entry point for the application.
/// </summary>
public const int max_name_ports=7;
public const int regdisposition_openexisting=(0x00000001);
// open key only if exists
public const int cm_registry_hardware=(0x00000000);

public const int cr_success = (0x00000000);
public const int cr_no_such_value = (0x00000025);
public const int cr_invalid_data = (0x0000001f);
public const int digcf_present = (0x00000002);
public const int diocr_installer = (0x00000001);
// maximumallowed access type to reg.
public const int maximum_allowed = (0x02000000);
[structlayout(layoutkind.sequential)]

public class sp_devinfo_data
{
public int cbsize;
public guid classguid;
public int devinst; // devinst handle
public ulong reserved;
};


[dllimport("cfgmgr32.dll")]
public static extern uint32
cm_open_devnode_key(intptr dndevnode, uint32 samdesired,
uint32 ulhardwareprofile,
uint32 disposition,intptr phkdevice, uint32 ulflags);

[dllimport("cfgmgr32.dll")]
public static extern uint32
cm_enumerate_classes(uint32 classindex,ref guid classguid, uint32 params);

[dllimport("setupapi.dll")]//
public static extern boolean
setupdiclassnamefromguida(ref guid classguid,
stringbuilder classname, //char * ?
uint32 classnamesize, ref uint32 requiredsize);

[dllimport("setupapi.dll")]
public static extern intptr
setupdigetclassdevsa(ref guid classguid, uint32 enumerator,
intptr hwndparent, uint32 flags);

[dllimport("setupapi.dll")]
public static extern boolean
setupdienumdeviceinfo(intptr deviceinfoset, uint32 memberindex,
ref sp_devinfo_data deviceinfodata);

[dllimport("setupapi.dll")]
public static extern boolean
setupdidestroydeviceinfolist(intptr deviceinfoset);

[dllimport("setupapi.dll")]
public static extern intptr
setupdigetclassdevsa(ref guid classguid, uint32 samdesired,
uint32 flags, ref string hwndparent, intptr reserved);

[dllimport("setupapi.dll")]
public static extern intptr
setupdiopenclassregkeyexa(
ref guid classguid, uint32 samdesired, int flags, intptr machinename,
uint32 reserved);

[dllimport("advapi32.dll")]
public static extern uint32
regqueryvaluea(intptr keyclass,uint32 subkey,
stringbuilder classdescription,ref uint32 sizeb);


[dllimport("user32.dll")]
public static extern boolean
chartooem(string lpszsrc, stringbuilder lpszdst);

public static int enumerateclasses(uint32 classindex,
ref stringbuilder classname, stringbuilder classdescription, ref string id,
ref bool devicepresent)
{
guid classguid=guid.empty;

intptr newdeviceinfoset;
sp_devinfo_data deviceinfodata;
uint32 result;
stringbuilder name=new stringbuilder("");
bool resnam=false;
uint32 requiredsize=0;

intptr ptr;

result = cm_enumerate_classes(classindex, ref classguid,0);


classname=new stringbuilder("");
devicepresent=false;
//incorrect device class:
if(result == cr_invalid_data)
{
return -2;
}
//device class is absent
if(result == cr_no_such_value)
{
return -1;
}
//bad param. - fatal error
if(result != cr_success)
{
return -3;
}


name.capacity=0;
resnam=setupdiclassnamefromguida(ref classguid,name,requiredsize,ref requiredsize);
if(requiredsize > 0)
{
name.capacity=(int)requiredsize;
resnam=setupdiclassnamefromguida(ref classguid,name,requiredsize,ref requiredsize);

}

newdeviceinfoset=setupdigetclassdevsa(ref classguid,0,intptr.zero,digcf_present);

if(newdeviceinfoset.toint32() == -1)
{
devicepresent=false;
classname=name;
id=classguid.tostring();
return 0;}

intptr keyclass=setupdiopenclassregkeyexa(
ref classguid, maximum_allowed, diocr_installer,intptr.zero,0);
if(keyclass.toint32() == -1)
{
devicepresent=false;
classname=name;
id=classguid.tostring();
return 0;}


uint32 sizeb=1000;

stringbuilder cd=new stringbuilder("");
classdescription.capacity=1000;

uint32 res=regqueryvaluea(keyclass,0,classdescription,ref sizeb);


if(res != 0)classdescription=new stringbuilder("");
setupdidestroydeviceinfolist(newdeviceinfoset);
classname=name;
id=classguid.tostring();
devicepresent=true;

return 0;

}

[stathread]
static void main(string[] args)
{
stringbuilder classes=new stringbuilder("");
stringbuilder classesdescr=new stringbuilder("");

stringbuilder classesdescroem=new stringbuilder("");
classesdescroem.capacity=1000;
boolean devexist=false;
uint32 i=0;
string id="";
while(true)
{

int res=enumerateclasses(i,ref classes,classesdescr,ref id ,ref devexist);
if(res == -1)break;
++i;
if(res < -1 || !devexist)continue;
console.writeline("classname={0}, description={1},id={2}",classes,classesdescr,id);
}
return;
}
}
}
////////////////////////////////////////////////////////在我机子上运行结果//////////////////////////////////////////////////////////////////

classname=wceusbs, description=windows ce usb devices,id=25dbce51-6c8f-4a72-8a6d
-b54c2b4fc835
classname=security accelerator, description=security accelerators,id=268c95a1-ed
fe-11d3-95c3-0010dc4050a5
classname=usb, description=通用串行总线控制器,id=36fc9e60-c465-11cf-8056-4445535
40000
classname=pnpprinters, description=ieee 1394 和 scsi 打印机,id=4658ee7e-f050-11d
1-b6bd-00c04fa372a7
classname=dot4, description=ieee 1284.4 设备,id=48721b56-6795-11d2-b1a8-0080c72e
74a2
classname=dot4print, description=ieee 1284.4 兼容打印机,id=49ce6ac8-6f86-11d2-b1
e5-0080c72e74a2
classname=cdrom, description=dvd/cd-rom 驱动器,id=4d36e965-e325-11ce-bfc1-08002b
e10318
classname=computer, description=计算机,id=4d36e966-e325-11ce-bfc1-08002be10318
classname=diskdrive, description=磁盘驱动器,id=4d36e967-e325-11ce-bfc1-08002be10
318
classname=display, description=显示卡,id=4d36e968-e325-11ce-bfc1-08002be10318
classname=fdc, description=软盘控制器,id=4d36e969-e325-11ce-bfc1-08002be10318
classname=hdc, description=ide ata/atapi 控制器,id=4d36e96a-e325-11ce-bfc1-08002
be10318
classname=keyboard, description=键盘,id=4d36e96b-e325-11ce-bfc1-08002be10318
classname=media, description=声音、视频和游戏控制器,id=4d36e96c-e325-11ce-bfc1-0
8002be10318
classname=modem, description=调制解调器,id=4d36e96d-e325-11ce-bfc1-08002be10318
classname=monitor, description=监视器,id=4d36e96e-e325-11ce-bfc1-08002be10318
classname=mouse, description=鼠标和其它指针设备,id=4d36e96f-e325-11ce-bfc1-08002
be10318
classname=mtd, description=memory technology driver,id=4d36e970-e325-11ce-bfc1-0
8002be10318
classname=multifunction, description=多功能卡,id=4d36e971-e325-11ce-bfc1-08002be
10318
classname=net, description=网络适配器,id=4d36e972-e325-11ce-bfc1-08002be10318
classname=netclient, description=网络客户,id=4d36e973-e325-11ce-bfc1-08002be1031
8
classname=netservice, description=网络服务,id=4d36e974-e325-11ce-bfc1-08002be103
18
classname=nettrans, description=网络协议,id=4d36e975-e325-11ce-bfc1-08002be10318

classname=pcmcia, description=pcmcia 卡,id=4d36e977-e325-11ce-bfc1-08002be10318
classname=ports, description=端口 (com 和 lpt),id=4d36e978-e325-11ce-bfc1-08002b
e10318
classname=printer, description=打印机,id=4d36e979-e325-11ce-bfc1-08002be10318
classname=scsiadapter, description=scsi 和 raid 控制器,id=4d36e97b-e325-11ce-bfc
1-08002be10318
classname=system, description=系统设备,id=4d36e97d-e325-11ce-bfc1-08002be10318
classname=unknown, description=其它设备,id=4d36e97e-e325-11ce-bfc1-08002be10318
classname=floppydisk, description=软盘驱动器,id=4d36e980-e325-11ce-bfc1-08002be1
0318
classname=processor, description=处理器,id=50127dc3-0f36-415e-a6cc-4cb3be910b65
classname=multiportserial, description=多串口卡,id=50906cb8-ba12-11d1-bf5d-0000f
805f530
classname=smartcardreader, description=智能卡阅读器,id=50dd5230-ba8a-11d1-bf5d-0
000f805f530
classname=volumesnapshot, description=存储卷影副本,id=533c5b84-ec70-11d2-9505-00
c04f79deaf
classname=biometric, description=personal identification devices,id=53d29ef7-377
c-4d14-864b-eb3a85769359
classname=1394, description=ieee 1394 总线主控制器,id=6bdd1fc1-810f-11d0-bec7-08
002be2092f
classname=infrared, description=红外线设备,id=6bdd1fc5-810f-11d0-bec7-08002be209
2f
classname=image, description=图像处理设备,id=6bdd1fc6-810f-11d0-bec7-08002be2092
f
classname=tapedrive, description=磁带驱动器,id=6d807884-7d21-11cf-801c-08002be10
318
classname=volume, description=存储卷,id=71a27cdd-812a-11d0-bec7-08002be2092f
classname=battery, description=电池,id=72631e54-78a4-11d0-bcf7-00aa00b7b32a
classname=hidclass, description=人体学接口设备,id=745a17a0-74d3-11d0-b6fe-00a0c9
0f57da
classname=61883, description=61883 设备类,id=7ebefbc0-3200-11d2-b4c2-00a0c9697d0
7
classname=legacydriver, description=非即插即用驱动程序,id=8ecc055d-047f-11d1-a53
7-0000f8753ed1
classname=avc, description=avc 设备类,id=c06ff265-ae09-48f0-812c-16753d7cba83
classname=enum1394, description=ieee 1394 ip 网络计数器,id=c459df55-db08-11d1-b0
09-00a0c9081ff6
classname=mediumchanger, description=介质变换器,id=ce5939ae-ebde-11d0-b181-0000f
8753ec4
classname=sbp2, description=sbp2 ieee 1394 设备,id=d48179be-ec20-11d1-b6b8-00c04
fa372a7




文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·Java开发工具配置 UltraEdit-JSP教程,Java技巧及代码
·遍历设备管理器的设备-.NET教程,评论及其它
·用正则表达式剔除文本中的HTML标记-ASP教程,正则表达式
·一个通用的DataGridTableStyle的做法-.NET教程,数据库应用
·java连接Oracle数据库-JSP教程,Java技巧及代码
·将XML存入关系数据库-JSP教程,数据库相关
·如何在Web页面上直接打开、编辑、创建Office文档-ASP教程,ASP应用
·asp之日期和时间函数示例-ASP教程,ASP应用
·ASP.Net Web Page深入探讨-ASP教程,ASP应用
·浅析Microsoft .net PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)-.NET教程,.NET Framework
最新文章
·fireworks 8绘制精致指南针图案_fireworks教程
·卸载多重引导系统中的windows vista操作系统_windows vista
·如何做到google adsense好收入的几点_网赚技巧
·百度主题推广和google adsense的综合比较_网赚技巧
·[新闻会客厅]孙雁:八零后的女闪客_站长访谈
·“流量交换型站点”访客黏度问题凸显_站长心得
·大唐社区站长经验谈社区运营_站长心得
·blog站点如何用rss搜索来推广_站长心得
·自我防护web站点和恶意链接的方法_站长心得
·网站投资你和我的20个自身检查(2)_站长心得
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭