Author: hbelusca Date: Wed Oct 31 00:41:02 2012 New Revision: 57654
URL: http://svn.reactos.org/svn/reactos?rev=57654&view=rev Log: Forgot two files.
Modified: branches/ros-csrss/ (props changed) branches/ros-csrss/dll/win32/samsrv/samrpc.c branches/ros-csrss/win32ss/w32ksvc.h
Propchange: branches/ros-csrss/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Oct 31 00:41:02 2012 @@ -13,4 +13,4 @@ /branches/usb-bringup:51335,51337,51341-51343,51348,51350,51353,51355,51365-51369,51372,51384-54388,54396-54398,54736-54737,54752-54754,54756-54760,54762,54764-54765,54767-54768,54772,54774-54777,54781,54787,54790-54792,54797-54798,54806,54808,54834-54838,54843,54850,54852,54856,54858-54859 /branches/usb-bringup-trunk:55019-55543,55548-55554,55556-55567 /branches/wlan-bringup:54809-54998 -/trunk/reactos:57561-57652 +/trunk/reactos:57561-57653
Modified: branches/ros-csrss/dll/win32/samsrv/samrpc.c URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/dll/win32/samsrv/samrp... ============================================================================== --- branches/ros-csrss/dll/win32/samsrv/samrpc.c [iso-8859-1] (original) +++ branches/ros-csrss/dll/win32/samsrv/samrpc.c [iso-8859-1] Wed Oct 31 00:41:02 2012 @@ -7,18 +7,18 @@ * PROGRAMMERS: Eric Kohl */
-/* INCLUDES ****************************************************************/ +/* INCLUDES ******************************************************************/
#include "samsrv.h"
WINE_DEFAULT_DEBUG_CHANNEL(samsrv);
-/* GLOBALS ********************************************************************/ +/* GLOBALS *******************************************************************/
static SID_IDENTIFIER_AUTHORITY NtSidAuthority = {SECURITY_NT_AUTHORITY};
-/* FUNCTIONS ***************************************************************/ +/* FUNCTIONS *****************************************************************/
VOID SampStartRpcServer(VOID) @@ -4187,9 +4187,125 @@ SamrRemoveMemberFromAlias(IN SAMPR_HANDLE AliasHandle, IN PRPC_SID MemberId) { - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; -} + PSAM_DB_OBJECT AliasObject; + LPWSTR MemberIdString = NULL; + HANDLE MembersKeyHandle = NULL; + HANDLE MemberKeyHandle = NULL; + ULONG ulValueCount; + NTSTATUS Status; + + TRACE("SamrRemoveMemberFromAlias(%p %p)\n", + AliasHandle, MemberId); + + /* Validate the alias handle */ + Status = SampValidateDbObject(AliasHandle, + SamDbAliasObject, + ALIAS_REMOVE_MEMBER, + &AliasObject); + if (!NT_SUCCESS(Status)) + { + TRACE("failed with status 0x%08lx\n", Status); + return Status; + } + + ConvertSidToStringSidW(MemberId, &MemberIdString); + TRACE("Member SID: %S\n", MemberIdString); + + Status = SampRegOpenKey(AliasObject->MembersKeyHandle, + MemberIdString, + KEY_WRITE | KEY_QUERY_VALUE, + &MemberKeyHandle); + if (!NT_SUCCESS(Status)) + { + TRACE("SampRegOpenKey failed with status 0x%08lx\n", Status); + goto done; + } + + Status = SampRegDeleteValue(MemberKeyHandle, + AliasObject->Name); + if (!NT_SUCCESS(Status)) + { + TRACE("SampRegDeleteValue failed with status 0x%08lx\n", Status); + goto done; + } + + Status = SampRegQueryKeyInfo(MemberKeyHandle, + NULL, + &ulValueCount); + if (!NT_SUCCESS(Status)) + { + TRACE("SampRegQueryKeyInfo failed with status 0x%08lx\n", Status); + goto done; + } + + if (ulValueCount == 0) + { + SampRegCloseKey(MemberKeyHandle); + MemberKeyHandle = NULL; + + Status = SampRegDeleteKey(AliasObject->MembersKeyHandle, + MemberIdString); + if (!NT_SUCCESS(Status)) + { + TRACE("SampRegDeleteKey failed with status 0x%08lx\n", Status); + goto done; + } + } + + Status = SampRegOpenKey(AliasObject->KeyHandle, + L"Members", + KEY_WRITE | KEY_QUERY_VALUE, + &MembersKeyHandle); + if (!NT_SUCCESS(Status)) + { + TRACE("SampRegOpenKey failed with status 0x%08lx\n", Status); + goto done; + } + + Status = SampRegDeleteValue(MembersKeyHandle, + MemberIdString); + if (!NT_SUCCESS(Status)) + { + TRACE("SampRegDeleteValue failed with status 0x%08lx\n", Status); + goto done; + } + + Status = SampRegQueryKeyInfo(MembersKeyHandle, + NULL, + &ulValueCount); + if (!NT_SUCCESS(Status)) + { + TRACE("SampRegQueryKeyInfo failed with status 0x%08lx\n", Status); + goto done; + } + + if (ulValueCount == 0) + { + SampRegCloseKey(MembersKeyHandle); + MembersKeyHandle = NULL; + + Status = SampRegDeleteKey(AliasObject->KeyHandle, + L"Members"); + if (!NT_SUCCESS(Status)) + { + TRACE("SampRegDeleteKey failed with status 0x%08lx\n", Status); + goto done; + } + } + +done: + if (MemberKeyHandle != NULL) + SampRegCloseKey(MemberKeyHandle); + + if (MembersKeyHandle != NULL) + SampRegCloseKey(MembersKeyHandle); + + if (MemberIdString != NULL) + LocalFree(MemberIdString); + + return Status; +} +
/* Function 33 */ NTSTATUS @@ -6338,9 +6454,27 @@ SamrRemoveMultipleMembersFromAlias(IN SAMPR_HANDLE AliasHandle, IN PSAMPR_PSID_ARRAY MembersBuffer) { - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; -} + ULONG i; + NTSTATUS Status = STATUS_SUCCESS; + + TRACE("SamrRemoveMultipleMembersFromAlias(%p %p)\n", + AliasHandle, MembersBuffer); + + for (i = 0; i < MembersBuffer->Count; i++) + { + Status = SamrRemoveMemberFromAlias(AliasHandle, + ((PSID *)MembersBuffer->Sids)[i]); + + if (Status == STATUS_MEMBER_IN_ALIAS) + Status = STATUS_SUCCESS; + + if (!NT_SUCCESS(Status)) + break; + } + + return Status; +} +
/* Function 54 */ NTSTATUS
Modified: branches/ros-csrss/win32ss/w32ksvc.h URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/w32ksvc.h?rev=... ============================================================================== --- branches/ros-csrss/win32ss/w32ksvc.h [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/w32ksvc.h [iso-8859-1] Wed Oct 31 00:41:02 2012 @@ -517,7 +517,11 @@ SVC_(UserSetConsoleReserveKeys, 2) SVC_(UserSetCursor, 1) SVC_(UserSetCursorContents, 2) +#ifdef NEW_CURSORICON +SVC_(UserSetCursorIconData, 4) +#else SVC_(UserSetCursorIconData, 6) +#endif SVC_(UserSetDbgTag, 2) SVC_(UserSetFocus, 1) SVC_(UserSetImeHotKey, 5)