Forgot two files.

svn path=/branches/ros-csrss/; revision=57654
This commit is contained in:
Hermès Bélusca-Maïto 2012-10-31 00:41:02 +00:00
parent 509461cd33
commit eb1f9f74b7
2 changed files with 145 additions and 7 deletions

View file

@ -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,10 +4187,126 @@ NTAPI
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
NTAPI
@ -6338,10 +6454,28 @@ NTAPI
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
NTAPI

View file

@ -517,7 +517,11 @@ SVC_(UserSetClipboardViewer, 1)
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)