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;
}
//---------------------------------------------------------------------------
|
本文转自Chinayu201451CTO博客,原文链接:http://blog.51cto.com/9233403/1967108 ,如需转载请自行联系原作者