我正在尝试使用
NetShareDelEx
,但收到错误 124,即 ERROR_INVALID_LEVEL
。
出于测试目的,我首先添加了与
NetShareAdd
的共享,这是成功的。然后我尝试将其删除。我的代码是:
LPCWSTR sharePath = L"C:\\SharedFolderEx";
SHARE_INFO_2 shareInfo;
ZeroMemory(&shareInfo, sizeof(SHARE_INFO_2));
shareInfo.shi2_netname = L"SharedFolderEx";
shareInfo.shi2_type = STYPE_DISKTREE;
shareInfo.shi2_remark = L"Shared Folder for testing";
shareInfo.shi2_permissions = ACCESS_READ | ACCESS_WRITE | ACCESS_DELETE;
shareInfo.shi2_max_uses = -1;
shareInfo.shi2_path = (LPWSTR)sharePath;
shareInfo.shi2_passwd = NULL;
DWORD parmErr;
DWORD status = NetShareAdd(NULL, 2, (LPBYTE)&shareInfo, &parmErr);
if(status != NERR_Success && status != NERR_DuplicateShare) {
printf("NetShareAdd failed, Error code: %d\n", status);
return;
}
status = NetShareDelEx(NULL, 2, (LPBYTE)&shareInfo);
if(status != NERR_Success) {
printf("NetShareDelEx failed, Error code: %d\n", status);
return;
}
我还尝试使用
NetShareDelEx
或 SHARE_INFO_0
进行 SHARE_INFO_1
调用,但得到了相同的错误代码 (124)。如果我使用 NetShareDel
或 NetShareDelSticky
没有问题,但我需要使用 NetShareDelEx
。
我做错了什么?
根据文档:NetShareDelEx 函数
如果 level 参数指定为 0、1、2 或 502,则 buf 参数指向 SHARE_INFO_0、SHARE_INFO_1、SHARE_INFO_2 或 SHARE_INFO_502结构体,以及shi0_netname、shi1_netname、 使用该结构的 shi2_netname 或 shi502_netname 成员;这 其他成员将被忽略。
我建议你可以尝试只使用
shi2_netname
并忽略其他成员。