wine/dlls/netapi32/local_group.c
2011-09-07 18:13:30 +02:00

252 lines
7.1 KiB
C

/*
* Copyright 2006 Robert Reif
*
* netapi32 local group functions
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <stdarg.h>
#include "ntstatus.h"
#define WIN32_NO_STATUS
#include "windef.h"
#include "winbase.h"
#include "winerror.h"
#include "lmcons.h"
#include "lmaccess.h"
#include "lmapibuf.h"
#include "lmerr.h"
#include "winreg.h"
#include "ntsecapi.h"
#include "wine/debug.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(netapi32);
/************************************************************
* NetLocalGroupAdd (NETAPI32.@)
*/
NET_API_STATUS WINAPI NetLocalGroupAdd(
LPCWSTR servername,
DWORD level,
LPBYTE buf,
LPDWORD parm_err)
{
FIXME("(%s %d %p %p) stub!\n", debugstr_w(servername), level, buf,
parm_err);
return NERR_Success;
}
/************************************************************
* NetLocalGroupAddMember (NETAPI32.@)
*/
NET_API_STATUS WINAPI NetLocalGroupAddMember(
LPCWSTR servername,
LPCWSTR groupname,
PSID membersid)
{
FIXME("(%s %s %p) stub!\n", debugstr_w(servername),
debugstr_w(groupname), membersid);
return NERR_Success;
}
/************************************************************
* NetLocalGroupAddMembers (NETAPI32.@)
*/
NET_API_STATUS WINAPI NetLocalGroupAddMembers(
LPCWSTR servername,
LPCWSTR groupname,
DWORD level,
LPBYTE buf,
DWORD totalentries)
{
FIXME("(%s %s %d %p %d) stub!\n", debugstr_w(servername),
debugstr_w(groupname), level, buf, totalentries);
return NERR_Success;
}
/************************************************************
* NetLocalGroupDel (NETAPI32.@)
*/
NET_API_STATUS WINAPI NetLocalGroupDel(
LPCWSTR servername,
LPCWSTR groupname)
{
FIXME("(%s %s) stub!\n", debugstr_w(servername), debugstr_w(groupname));
return NERR_Success;
}
/************************************************************
* NetLocalGroupDelMember (NETAPI32.@)
*/
NET_API_STATUS WINAPI NetLocalGroupDelMember(
LPCWSTR servername,
LPCWSTR groupname,
PSID membersid)
{
FIXME("(%s %s %p) stub!\n", debugstr_w(servername),
debugstr_w(groupname), membersid);
return NERR_Success;
}
/************************************************************
* NetLocalGroupDelMembers (NETAPI32.@)
*/
NET_API_STATUS WINAPI NetLocalGroupDelMembers(
LPCWSTR servername,
LPCWSTR groupname,
DWORD level,
LPBYTE buf,
DWORD totalentries)
{
FIXME("(%s %s %d %p %d) stub!\n", debugstr_w(servername),
debugstr_w(groupname), level, buf, totalentries);
return NERR_Success;
}
/************************************************************
* NetLocalGroupEnum (NETAPI32.@)
*/
NET_API_STATUS WINAPI NetLocalGroupEnum(
LPCWSTR servername,
DWORD level,
LPBYTE* bufptr,
DWORD prefmaxlen,
LPDWORD entriesread,
LPDWORD totalentries,
PDWORD_PTR resumehandle)
{
FIXME("(%s %d %p %d %p %p %p) stub!\n", debugstr_w(servername),
level, bufptr, prefmaxlen, entriesread, totalentries, resumehandle);
*entriesread = 0;
*totalentries = 0;
return NERR_Success;
}
/************************************************************
* NetLocalGroupGetInfo (NETAPI32.@)
*/
NET_API_STATUS WINAPI NetLocalGroupGetInfo(
LPCWSTR servername,
LPCWSTR groupname,
DWORD level,
LPBYTE* bufptr)
{
static const WCHAR commentW[]={'N','o',' ','c','o','m','m','e','n','t',0};
LOCALGROUP_INFO_1* info;
DWORD size;
FIXME("(%s %s %d %p) semi-stub!\n", debugstr_w(servername),
debugstr_w(groupname), level, bufptr);
size = sizeof(*info) + sizeof(WCHAR) * (lstrlenW(groupname)+1) + sizeof(commentW);
NetApiBufferAllocate(size, (LPVOID*)&info);
info->lgrpi1_name = (LPWSTR)(info + 1);
lstrcpyW(info->lgrpi1_name, groupname);
info->lgrpi1_comment = info->lgrpi1_name + lstrlenW(groupname) + 1;
lstrcpyW(info->lgrpi1_comment, commentW);
*bufptr = (LPBYTE)info;
return NERR_Success;
}
/************************************************************
* NetLocalGroupGetMembers (NETAPI32.@)
*/
NET_API_STATUS WINAPI NetLocalGroupGetMembers(
LPCWSTR servername,
LPCWSTR localgroupname,
DWORD level,
LPBYTE* bufptr,
DWORD prefmaxlen,
LPDWORD entriesread,
LPDWORD totalentries,
PDWORD_PTR resumehandle)
{
FIXME("(%s %s %d %p %d, %p %p %p) stub!\n", debugstr_w(servername),
debugstr_w(localgroupname), level, bufptr, prefmaxlen, entriesread,
totalentries, resumehandle);
if (level == 3)
{
WCHAR userName[MAX_COMPUTERNAME_LENGTH + 1];
DWORD userNameLen;
DWORD len,needlen;
PLOCALGROUP_MEMBERS_INFO_3 ptr;
/* still a stub, current user is belonging to all groups */
*totalentries = 1;
*entriesread = 0;
userNameLen = MAX_COMPUTERNAME_LENGTH + 1;
if (!GetUserNameW(userName,&userNameLen))
return ERROR_NOT_ENOUGH_MEMORY;
needlen = sizeof(LOCALGROUP_MEMBERS_INFO_3) +
(userNameLen+2) * sizeof(WCHAR);
if (prefmaxlen != MAX_PREFERRED_LENGTH)
len = min(prefmaxlen,needlen);
else
len = needlen;
NetApiBufferAllocate(len, (LPVOID *) bufptr);
if (len < needlen)
return ERROR_MORE_DATA;
ptr = (PLOCALGROUP_MEMBERS_INFO_3)*bufptr;
ptr->lgrmi3_domainandname = (LPWSTR)(*bufptr+sizeof(LOCALGROUP_MEMBERS_INFO_3));
lstrcpyW(ptr->lgrmi3_domainandname,userName);
*entriesread = 1;
}
return NERR_Success;
}
/************************************************************
* NetLocalGroupSetInfo (NETAPI32.@)
*/
NET_API_STATUS WINAPI NetLocalGroupSetInfo(
LPCWSTR servername,
LPCWSTR groupname,
DWORD level,
LPBYTE buf,
LPDWORD parm_err)
{
FIXME("(%s %s %d %p %p) stub!\n", debugstr_w(servername),
debugstr_w(groupname), level, buf, parm_err);
return NERR_Success;
}
/************************************************************
* NetLocalGroupSetMember (NETAPI32.@)
*/
NET_API_STATUS WINAPI NetLocalGroupSetMembers(
LPCWSTR servername,
LPCWSTR groupname,
DWORD level,
LPBYTE buf,
DWORD totalentries)
{
FIXME("(%s %s %d %p %d) stub!\n", debugstr_w(servername),
debugstr_w(groupname), level, buf, totalentries);
return NERR_Success;
}