我需要使用以下函数,但我遇到了args的问题:
在这种情况下,IP地址未设置。
cwbCO_SysHandle system;
LPSTR ipAddress = "";
ULONG ipLength = 32;
cwbCO_GetIPAddress(system, ipAddress, &ipLength);
我知道我需要将指向LPSTR的指针作为参数传递,但设置以下代码也不起作用:
cwbCO_SysHandle system;
LPSTR ipAddress = "";
ULONG ipLength = 32;
cwbCO_GetIPAddress(system, &ipAddress, &ipLength); //Incompatible types LPSTR* and LPSTR
正确的方法是什么?
语法
UINT CWB_ENTRY cwbCO_GetIPAddress(cwbCO_SysHandle系统,LPSTR IPAddress,PULONG长度);
参数
cwbCO_SysHandle系统 - 输入
Handle that previously was returned by cwbCO_CreateSystem or cwbCO_CreateSystemLike. It is the
IBM i identification.
LPSTR IPAddress - 输出
Pointer to a buffer that will contain the NULL-terminated IP address in dotted-decimal notation (in
the form "nnn.nnn.nnn.nnn" where each "nnn" is in the range of from 0 to 255).
PULONG长度 - 输入/输出
Pointer to the length of the IPAddress buffer. If the buffer is too small to hold the output, including
room for the terminating NULL, the size of the buffer
答案 0 :(得分:4)
我找到了文档,cwbCO_GetIPAddress
这里的相关部分是(重点补充):
LPSTR IPAddress - 输出 指向缓冲区的指针,它将以点分十进制表示法包含以NULL结尾的IP地址(格式为“nnn.nnn.nnn.nnn”,其中每个“nnn”的范围为0到255)。
所以你的代码应该更像这样:
cwbCO_SysHandle system;
char ipAddress[32]; //A buffer, not a pointer!
ULONG ipLength = 32;
cwbCO_GetIPAddress(system, ipAddress, &ipLength);
另外,请务必使用system
或cwbCO_CreateSystem
初始化cwbCO_CreateSystemLike
。