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

时间:2019-05-15 11:19:52

标签: 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", 2, reinterpret_cast<LPBYTE*>(&pBuffer));

有人知道这个问题可能来自哪里吗?因为网络路径正确,权限也正确

1 个答案:

答案 0 :(得分:2)

文档说,如果第一个参数(服务器名称)为NULL,则使用本地计算机。这就是为什么您的代码返回NERR_NetNameNotFound的原因。

此外,您错误地传递了最终参数。您需要额外的间接级别,因为该函数分配了缓冲区。

它应该看起来像这样:

NET_API_STATUS pStatus;
SHARE_INFO_2 *pBuffer;
pStatus = NetShareGetInfo(L"PCRT-S35521", L"sharedFolder", 2, (LPBYTE)&pBuffer);

请记住按照文档中给出的说明销毁缓冲区:

  

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