[NETAPI32]

Implement the client side of NetWkstaSetInfo and NetWkstaUserEnum.

svn path=/trunk/; revision=66441
This commit is contained in:
Eric Kohl 2015-02-24 22:15:58 +00:00
parent e6003a5b4e
commit 5d32abc29b
3 changed files with 103 additions and 3 deletions

View file

@ -254,10 +254,10 @@
@ stub NetValidatePasswordPolicy
@ stub NetValidatePasswordPolicyFree
@ stdcall NetWkstaGetInfo(wstr long ptr)
@ stub NetWkstaSetInfo
@ stdcall NetWkstaSetInfo(wstr long ptr ptr)
@ stub NetWkstaTransportAdd
@ stub NetWkstaTransportDel
@ stdcall NetWkstaTransportEnum (wstr long ptr long ptr ptr ptr)
@ stdcall NetWkstaTransportEnum(wstr long ptr long ptr ptr ptr)
@ stdcall NetWkstaUserEnum(wstr long ptr long ptr ptr ptr)
@ stdcall NetWkstaUserGetInfo(wstr long ptr)
@ stub NetWkstaUserSetInfo

View file

@ -417,6 +417,7 @@ NET_API_STATUS WINAPI NetWkstaUserGetInfo(LMSTR reserved, DWORD level,
/************************************************************
* NetWkstaUserEnum (NETAPI32.@)
*/
#if 0
NET_API_STATUS WINAPI
NetWkstaUserEnum(LMSTR servername, DWORD level, LPBYTE* bufptr,
DWORD prefmaxlen, LPDWORD entriesread,
@ -426,6 +427,7 @@ NetWkstaUserEnum(LMSTR servername, DWORD level, LPBYTE* bufptr,
level, bufptr, prefmaxlen, entriesread, totalentries, resumehandle);
return ERROR_INVALID_PARAMETER;
}
#endif
/************************************************************
* NetpGetComputerName (NETAPI32.@)

View file

@ -171,7 +171,7 @@ NetGetJoinInformation(
NET_API_STATUS
WINAPI
NetWkstaGetInfo(
LMSTR servername,
LPWSTR servername,
DWORD level,
LPBYTE *bufptr)
{
@ -194,4 +194,102 @@ NetWkstaGetInfo(
return status;
}
NET_API_STATUS
WINAPI
NetWkstaSetInfo(
LPWSTR servername,
DWORD level,
LPBYTE buffer,
LPDWORD parm_err)
{
NET_API_STATUS status;
RpcTryExcept
{
status = NetrWkstaSetInfo(servername,
level,
(LPWKSTA_INFO)buffer,
parm_err);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return status;
}
NET_API_STATUS
WINAPI
NetWkstaUserEnum(
LMSTR servername,
DWORD level,
LPBYTE *bufptr,
DWORD prefmaxlen,
LPDWORD entriesread,
LPDWORD totalentries,
LPDWORD resumehandle)
{
WKSTA_USER_ENUM_STRUCT UserEnumInfo;
WKSTA_USER_INFO_0_CONTAINER Level0;
WKSTA_USER_INFO_1_CONTAINER Level1;
NET_API_STATUS status;
TRACE("(%s, %d, %p, %d, %p, %p, %p): stub!\n", debugstr_w(servername),
level, bufptr, prefmaxlen, entriesread, totalentries, resumehandle);
UserEnumInfo.Level = level;
switch (level)
{
case 0:
UserEnumInfo.WkstaUserInfo.Level0 = &Level0;
UserEnumInfo.WkstaUserInfo.Level0->EntriesRead = 0;
UserEnumInfo.WkstaUserInfo.Level0->Buffer = NULL;
break;
case 1:
UserEnumInfo.WkstaUserInfo.Level1 = &Level1;
UserEnumInfo.WkstaUserInfo.Level1->EntriesRead = 0;
UserEnumInfo.WkstaUserInfo.Level1->Buffer = NULL;
break;
default:
return ERROR_INVALID_PARAMETER;
}
RpcTryExcept
{
status = NetrWkstaUserEnum(servername,
&UserEnumInfo,
prefmaxlen,
totalentries,
resumehandle);
if (status == NERR_Success || status == ERROR_MORE_DATA)
{
switch (level)
{
case 0:
*bufptr = (LPBYTE)UserEnumInfo.WkstaUserInfo.Level0->Buffer;
*entriesread = UserEnumInfo.WkstaUserInfo.Level0->EntriesRead;
break;
case 1:
*bufptr = (LPBYTE)UserEnumInfo.WkstaUserInfo.Level1->Buffer;
*entriesread = UserEnumInfo.WkstaUserInfo.Level1->EntriesRead;
break;
}
}
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return status;
}
/* EOF */