初用API之EnumPorts
来源:互联网 发布:设计主题软件 编辑:程序博客网 时间:2024/06/01 09:47
一、使用API函数之前,首先查阅MSDN或者其他权威资料,得到函数的具体介绍
EnumPorts
The EnumPorts function enumerates the ports that are available for printing on a specified server.(此函数枚举出了指定的服务器上面的可用打印机设备)
BOOL EnumPorts(
LPTSTR pName, // pointer to server name(指向服务器名称的指针)
DWORD Level, // specifies type of port info structure(打印机信息结构体的具体类型)
LPBYTE pPorts, // pointer to buffer to receive array of port
// info. Structures(指向打印机信息结构数组)
DWORD cbBuf, // specifies size, in bytes, of buffer(确定数组缓存的具体字节大小)
LPDWORD pcbNeeded, // pointer to number of bytes stored into
// buffer (or required buffer size)(指向数组字节大小存储)
LPDWORD pcReturned // pointer to number of PORT_INFO_*.
// structures stored into buffer(指向打印机结构数目的指针)
);
其中关于打印机信息的结构类型亦可参照MSDN文档,我们此处参照PORT_INFO_2
PORT_INFO_2
The PORT_INFO_2 structure identifies a supported printer port.
typedef struct _PORT_INFO_2 { // pi2
LPSTR pPortName;
LPSTR pMonitorName
LPSTR pDescription;
DWORD fPortType;
DWORD Reserved;
} PORT_INFO_2;
二、使用API
//需要加上头文件#include "winspool.h"const LPTSTR pName = NULL; // pointer to server name此处为空,就是本机const DWORD Level = 2; // specifies type of port info structure,即PORT_INFO_2LPBYTE port=0; // pointer to buffer to receive array of port info. structuresDWORD cbBuf=0; // specifies size, in bytes, of bufferDWORD pcbNeeded=0; // pointer to number of bytes stored into buffer (or required buffer size)DWORD pcReturned=0; // pointer to number of PORT_INFO_* structures stored into bufferif (!EnumPorts(NULL,2,port,0,&pcbNeeded,&pcReturned)){//TRACE("1\r\n");//根据手册可知,//pcbNeeded 说明:If cbBuf is equal to or greater than this value, //the variable pointed to by pcbNeeded represents the number of bytes stored into the buffer//所以经过此步后可以得知系统需要分配的内存缓存的大小,大小为pcbNeeded}port = new BYTE[pcbNeeded];if (EnumPorts(pName,Level,port,pcbNeeded,&pcbNeeded,&pcReturned)){//TRACE("2\r\n");//经过此步骤,我们可以得到所需的打印机信息结构的数组指针是port//返回端口的个数是pcReturned//返回信息的字节大小是pcbNeeded}PORT_INFO_2 *pPort; pPort = (PORT_INFO_2*)port; //指针类型转换后可直接使用里的信息。这个是个人理解int i;for(i=0;i<pcReturned;i++){TRACE("%s\r\n",pPort->pPortName); //返回设备名称pPort ++;}
- 初用API之EnumPorts
- EnumPorts枚举当前计算机端口
- osworkflow api 之 spi
- osworkflow api 之 timer
- osworkflow api 之 util
- API之绘图函数
- WinSock之基础API
- API之绘图函数
- API之菜单函数
- API之网络函数
- api之sql基础
- API之函数
- API之菜单函数
- API之绘图函数
- API之消息函数
- API之绘图函数
- API之菜单函数
- API之打印函数
- Madplay移植到mini2440全过程详解
- as加载网站的xml
- Http协议学习
- 第49天
- 学渣报道
- 初用API之EnumPorts
- vb.net的异步读写数据流(使用线程、委托)
- linux下创建带密码的用户
- java提高篇(六)-----关键字static
- php单元测试
- 分享一下webservice的一点经验
- 代码面试最常用的10大算法
- swt 嵌入 xulrunner 中文目录不能正常执行js调用java
- c#关于Delegate最简单的例子:两个窗体间的消息传递