EnumPorts函数枚举计算端口

枚举打印端口示例
本文提供了一个使用C++实现的枚举Windows系统中所有可用打印端口的例子。通过调用`EnumPorts`函数,并适当处理缓冲区,程序能够获取并打印出每个端口的名称。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//---------------------------------------------------------------------------  
#include <windows>  
#include <winspool.h>  
#pragma hdrstop  
//---------------------------------------------------------------------------  
#pragma argsused  
#include <stdio.h>  
int  main( int  argc,  char * argv[])  
{  
       const  LPTSTR  pName = NULL;     // 此处为空,就是本机  
       const  DWORD  Level = 2;         // 指定端口类型结构体,即PORT_INFO_2  
       LPBYTE  port=0;          // 接收端口信息结构体数组指针  
       DWORD   pcbNeeded=0;     // 缓冲区字节指针(必需)  
       DWORD   pcReturned=0;    // 返回结果PORT_INFO_* 结构体缓冲区数量  
   
       if  (EnumPorts(NULL,Level,port,0,&pcbNeeded,&pcReturned))  
       {  
           return  0; //同一函数,第一次执行获取所需缓冲区大小pcbNeeded  
       }  
       port =  new  BYTE [pcbNeeded];  
       if  (!EnumPorts(pName,Level,port,pcbNeeded,&pcbNeeded,&pcReturned))  
       {  
           return  0; //同一函数,第二次执行获取端口个数pcReturned  
       }  
   
       PORT_INFO_2  ArrPort[100] = {0};  
       memcpy (ArrPort,port,pcbNeeded); //取出端口信息放入数组  
   
       for ( int  i=0;i<pcReturned;i++)  
       {  
           printf ( "%s \r\n" ,ArrPort[i].pPortName);  //返回端口名称  
       }  
       delete  port;  
   
       getchar ();  
       return  0;  
}  
//---------------------------------------------------------------------------

wKioL1nB-OGgLMPIAABHFhQVWn0902.jpg-wh_50











本文转自Chinayu201451CTO博客,原文链接:http://blog.51cto.com/9233403/1967108 ,如需转载请自行联系原作者



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值