/* * 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) { FIXME("(%s %s %d %p) stub!\n", debugstr_w(servername), debugstr_w(groupname), level, bufptr); 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; GetUserNameW(userName,&userNameLen); 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; }