C++ 函数NetShareGetInfo始终返回2310(此共享不存在)

C++ 函数NetShareGetInfo始终返回2310(此共享不存在),c++,windows,winapi,share,C++,Windows,Winapi,Share,我想恢复共享文件夹的属性。我使用NetShareGetInfo函数,但它会向我返回一个2310错误。此文件夹不存在。 这是我的密码: NET_API_STATUS pStatus; SHARE_INFO_2 pBuffer; //here status return 2310 - This shared resource does not exist. pStatus=NetShareGetInfo(nullptr, L"\\\\PCRT-S35521\\sharedFolder",

我想恢复共享文件夹的属性。我使用NetShareGetInfo函数,但它会向我返回一个2310错误。此文件夹不存在。 这是我的密码:

 NET_API_STATUS pStatus;
 SHARE_INFO_2 pBuffer;
 //here status return 2310 -  This shared resource does not exist.
 pStatus=NetShareGetInfo(nullptr,  L"\\\\PCRT-S35521\\sharedFolder", 2, reinterpret_cast<LPBYTE*>(&pBuffer));

有人知道这个问题是从哪里来的吗?因为网络路径正确,权限正确,文档中说,如果第一个参数(服务器名称)为空,则使用本地计算机。这就是代码返回NERR_NetNameNotFound的原因

除此之外,您还错误地传递了最终参数。由于函数分配缓冲区,因此需要额外的间接寻址级别

它应该是这样的:

NET_API_STATUS pStatus;
SHARE_INFO_2 *pBuffer;
pStatus = NetShareGetInfo(L"PCRT-S35521", L"sharedFolder", 2, (LPBYTE)&pBuffer);
请记住按照文档中给出的说明销毁缓冲区:

此缓冲区由系统分配,必须使用NetApiBufferFree函数释放


0级和1级有效吗?502可以要求管理员权限。@Anders否,我尝试了几个值,但每次尝试将ANSI编码转换为UTF-16编码时都会犯同样的错误。您需要实现真正的转换,调用MultiByteToWideChar或_mbtowcsconversion@llnspectable我尝试了你的解决方案:int wchars_num=MultiByteToWideChar CP_UTF8,0,netname.c_str,-1,nullptr,0;wchar_t wstr[wchars_num];多字节towidechar CP_UTF8,0,netname.c_str,-1,wstr,wchars_num;pwsNetName=wstr;但是它返回相同的错误代码谢谢你的回答。我没有正确地阅读文档。我想我必须把网络的路径。