2

我需要使用以下功能,但我遇到了 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 system, LPSTR IPAddress, PULONG length );

参数

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
4

1 回答 1

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_CreateSystemor初始化您的cwbCO_CreateSystemLike

于 2015-07-31T15:51:16.527 回答