gpt4 book ai didi

c - 错误 234 "More data is available"与 GetComputerNameEx

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:55 25 4
gpt4 key购买 nike

我在 GetComputerNameEx 函数中遇到了 More data is available 错误,但不知道如何修复它。

这是我的代码:

int wmain()
{
COMPUTER_NAME_FORMAT nameType = ComputerNameDnsFullyQualified;
WCHAR computerName[MAX_COMPUTERNAME_LENGTH + 1];
DWORD size = ARRAYSIZE(computerName);

BOOL pcName = GetComputerNameEx(nameType, computerName, &size);

DWORD error = GetLastError();



if (pcName != 0)
{
wprintf("Computer name: %s\n", computerName);
}
else
{
wprintf(L"Error getting the name. Code: %li\n", error);
}

return 0;
}

不知道如何将 size 变量设置为输出,以便我可以正确声明 computerName 数组。

最佳答案

您必须调用该函数两次;一次使用空指针来获得所需的大小,然后再次使用(至少)指定大小的缓冲区。正如文档所说:

To ensure that this buffer is large enough, set this parameter to NULL and use the required buffer size returned in the lpnSize parameter.

这是 Win32 函数的常见模式。是的,它确实会导致可能的竞争条件,但这就是它的工作原理。

示例

DWORD dwSize = 0;
if (GetComputerNameEx(nameType, nullptr, &dwSize))
{
WCHAR* computerName;
computerName = (WCHAR*)malloc(dwSize * sizeof(WCHAR));
if (GetComputerNameEx(nameType, computerName, &dwSize))
{
// use the name
}
free(computerName); // don't forget to free
}

关于c - 错误 234 "More data is available"与 GetComputerNameEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40142551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com