注:
1.第一次写博客,有写的不对的地方,你来打我呀 ┗( ▔, ▔ )┛
2.程序猿就应该往后翻,直接看代码
函数介绍-RasEnumEntries
DWORD RasEnumEntriesW( LPCWSTR,
LPCWSTR,
LPRASENTRYNAMEW,
LPDWORD,
LPDWORD
);
参数解析
序号 | 参数 | 解析 |
---|---|---|
1 | LPCWSTR | 保留,直接写NULL |
2 | LPCWSTR | 指向BPK的字符串路径,填NULL,则枚举AllUsers 的所有配置 |
3 | LPRASENTRYNAMEW | RASENTRYNAME结构体指针 作为输入:需设置第一个结构体的 dwSize =sizeof(RASENTRYNAME) |
4 | LPDWORD | 作为输入:lprasentryname指定的缓冲区的大小(以字节为单位) 作为输出:所需的RASENTRYNAME结构数组的大小 注意:可以传入NULL,会返回ERROR_BUFFER_TOO_SMALL,以获取所需存储消息的字节数 |
5 | LPDWORD | 所有网络连接的数量 |
RASENTRYNAMEA 结构体
#define RASENTRYNAMEA struct tagRASENTRYNAMEA
RASENTRYNAMEA {
DWORD dwSize;
CHAR szEntryName[RAS_MaxEntryName + 1 ];
DWORD dwFlags;
CHAR szPhonebookPath[MAX_PATH + 1];
};
#define RAS_MaxEntryName 256
#define MAX_PATH 260
返回值解析
这里来看一下返回值类型DWORD 的具体定义
typedef unsigned __LONG32 DWORD;
#ifndef __LP64__ /* 32 bit target, 64 bit Mingw target */
#define __LONG32 long
#else /* 64 bit Cygwin target */
#define __LONG32 int
#endif
一个32位的无符号数,在32位系统中等价于 ↓↓↓↓
typedef unsigned int DWORD
返回值
这里例举出几个常用的,其他的错误请参照:Routing and Remote Access Error Codes
序号 | 参数名 | 实际值 | 解析 |
---|---|---|---|
1 | ERROR_SUCCESS | 0 | 函数执行成功 |
1 | ERROR_BUFFER_TOO_SMALL | 603 | 用于存储lprasentryname 所分配的空间不够用 |
2 | ERROR_INVALID_SIZE | 632 | lprasentryname参数中的dwSize 类型在当前windows平台不支持 |
3 | ERROR_NOT_ENOUGH_MEMORY | 8 | 函数没有申请到足够的内存空间去执行操作 |
实战代码
/*
时间:2019年4月18日22:11:24
时间太晚,明天再写
*/
DWORD dwCb = 0;
DWORD dwRet = ERROR_SUCCESS;
DWORD dwEntries = 0;
LPRASENTRYNAME lpRasEntryName = NULL;