mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 01:39:30 +00:00
- Implement ImpersonateLoggedOnUser().
- Moved some security related functions to better places. svn path=/trunk/; revision=8870
This commit is contained in:
parent
8a8167ab4d
commit
9e558fcc6a
7 changed files with 663 additions and 509 deletions
|
@ -1,4 +1,4 @@
|
||||||
# $Id: makefile,v 1.38 2004/03/10 21:56:04 navaraf Exp $
|
# $Id: makefile,v 1.39 2004/03/25 11:30:07 ekohl Exp $
|
||||||
|
|
||||||
PATH_TO_TOP = ../..
|
PATH_TO_TOP = ../..
|
||||||
|
|
||||||
|
@ -34,10 +34,10 @@ SECURITY_OBJECTS = \
|
||||||
sec/sid.o
|
sec/sid.o
|
||||||
|
|
||||||
SERVICE_OBJECTS = \
|
SERVICE_OBJECTS = \
|
||||||
|
service/eventlog.o \
|
||||||
service/scm.o \
|
service/scm.o \
|
||||||
service/sctrl.o \
|
service/sctrl.o \
|
||||||
service/undoc.o \
|
service/undoc.o
|
||||||
service/eventlog.o
|
|
||||||
|
|
||||||
TOKEN_OBJECTS = \
|
TOKEN_OBJECTS = \
|
||||||
token/privilege.o \
|
token/privilege.o \
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: misc.c,v 1.11 2004/03/08 18:09:05 sedwards Exp $
|
/* $Id: misc.c,v 1.12 2004/03/25 11:30:07 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS system libraries
|
* PROJECT: ReactOS system libraries
|
||||||
|
@ -6,11 +6,13 @@
|
||||||
* PURPOSE: Miscellaneous security functions
|
* PURPOSE: Miscellaneous security functions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <debug.h>
|
|
||||||
#define NTOS_MODE_USER
|
#define NTOS_MODE_USER
|
||||||
#include <ntos.h>
|
#include <ntos.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
|
#define NDEBUG
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
|
@ -36,6 +38,40 @@ AreAnyAccessesGranted(DWORD GrantedAccess,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* GetFileSecurityA [ADVAPI32.@]
|
||||||
|
*
|
||||||
|
* Obtains Specified information about the security of a file or directory.
|
||||||
|
*
|
||||||
|
* PARAMS
|
||||||
|
* lpFileName [I] Name of the file to get info for
|
||||||
|
* RequestedInformation [I] SE_ flags from "winnt.h"
|
||||||
|
* pSecurityDescriptor [O] Destination for security information
|
||||||
|
* nLength [I] Length of pSecurityDescriptor
|
||||||
|
* lpnLengthNeeded [O] Destination for length of returned security information
|
||||||
|
*
|
||||||
|
* RETURNS
|
||||||
|
* Success: TRUE. pSecurityDescriptor contains the requested information.
|
||||||
|
* Failure: FALSE. lpnLengthNeeded contains the required space to return the info.
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* The information returned is constrained by the callers access rights and
|
||||||
|
* privileges.
|
||||||
|
*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL WINAPI
|
||||||
|
GetFileSecurityA (LPCSTR lpFileName,
|
||||||
|
SECURITY_INFORMATION RequestedInformation,
|
||||||
|
PSECURITY_DESCRIPTOR pSecurityDescriptor,
|
||||||
|
DWORD nLength,
|
||||||
|
LPDWORD lpnLengthNeeded)
|
||||||
|
{
|
||||||
|
DPRINT("GetFileSecurityW : stub\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -62,6 +98,22 @@ GetKernelObjectSecurity(HANDLE Handle,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* SetFileSecurityA [ADVAPI32.@]
|
||||||
|
* Sets the security of a file or directory
|
||||||
|
*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL STDCALL
|
||||||
|
SetFileSecurityA (LPCSTR lpFileName,
|
||||||
|
SECURITY_INFORMATION RequestedInformation,
|
||||||
|
PSECURITY_DESCRIPTOR pSecurityDescriptor)
|
||||||
|
{
|
||||||
|
DPRINT("SetFileSecurityA : stub\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -78,9 +130,9 @@ SetKernelObjectSecurity(HANDLE Handle,
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
return(FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
return(TRUE);
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,14 +149,87 @@ MapGenericMask(PDWORD AccessMask,
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL STDCALL
|
BOOL STDCALL
|
||||||
ImpersonateLoggedOnUser(HANDLE hToken)
|
ImpersonateLoggedOnUser(HANDLE hToken)
|
||||||
{
|
{
|
||||||
|
SECURITY_QUALITY_OF_SERVICE Qos;
|
||||||
|
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||||
|
HANDLE NewToken;
|
||||||
|
TOKEN_TYPE Type;
|
||||||
|
ULONG ReturnLength;
|
||||||
|
BOOL Duplicated;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
/* Get the token type */
|
||||||
|
Status = NtQueryInformationToken (hToken,
|
||||||
|
TokenType,
|
||||||
|
&Type,
|
||||||
|
sizeof(TOKEN_TYPE),
|
||||||
|
&ReturnLength);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError (RtlNtStatusToDosError (Status));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Type == TokenPrimary)
|
||||||
|
{
|
||||||
|
/* Create a duplicate impersonation token */
|
||||||
|
Qos.Length = sizeof(SECURITY_QUALITY_OF_SERVICE);
|
||||||
|
Qos.ImpersonationLevel = SecurityImpersonation;
|
||||||
|
Qos.ContextTrackingMode = SECURITY_DYNAMIC_TRACKING;
|
||||||
|
Qos.EffectiveOnly = FALSE;
|
||||||
|
|
||||||
|
ObjectAttributes.Length = sizeof(OBJECT_ATTRIBUTES);
|
||||||
|
ObjectAttributes.RootDirectory = NULL;
|
||||||
|
ObjectAttributes.ObjectName = NULL;
|
||||||
|
ObjectAttributes.Attributes = 0;
|
||||||
|
ObjectAttributes.SecurityDescriptor = NULL;
|
||||||
|
ObjectAttributes.SecurityQualityOfService = &Qos;
|
||||||
|
|
||||||
|
Status = NtDuplicateToken (hToken,
|
||||||
|
TOKEN_IMPERSONATE | TOKEN_QUERY,
|
||||||
|
&ObjectAttributes,
|
||||||
|
FALSE,
|
||||||
|
TokenImpersonation,
|
||||||
|
&NewToken);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError (RtlNtStatusToDosError (Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Duplicated = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* User the original impersonation token */
|
||||||
|
NewToken = hToken;
|
||||||
|
Duplicated = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Impersonate the the current thread */
|
||||||
|
Status = NtSetInformationThread (NtCurrentThread (),
|
||||||
|
ThreadImpersonationToken,
|
||||||
|
NewToken,
|
||||||
|
sizeof(HANDLE));
|
||||||
|
|
||||||
|
if (Duplicated == TRUE)
|
||||||
|
{
|
||||||
|
NtClose (NewToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError (RtlNtStatusToDosError (Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
|
@ -118,9 +243,9 @@ ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL ImpersonationLevel)
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
return(FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
return(TRUE);
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -140,9 +265,9 @@ RevertToSelf(VOID)
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
return(FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
return(TRUE);
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -207,4 +332,170 @@ GetUserNameW( LPWSTR lpszName, LPDWORD lpSize )
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* LookupAccountSidA [ADVAPI32.@]
|
||||||
|
*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL STDCALL
|
||||||
|
LookupAccountSidA (LPCSTR lpSystemName,
|
||||||
|
PSID lpSid,
|
||||||
|
LPSTR lpName,
|
||||||
|
LPDWORD cchName,
|
||||||
|
LPSTR lpReferencedDomainName,
|
||||||
|
LPDWORD cchReferencedDomainName,
|
||||||
|
PSID_NAME_USE peUse)
|
||||||
|
{
|
||||||
|
DPRINT1("LookupAccountSidA is unimplemented, but returns success\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* LookupAccountSidW [ADVAPI32.@]
|
||||||
|
*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL STDCALL
|
||||||
|
LookupAccountSidW (LPCWSTR lpSystemName,
|
||||||
|
PSID lpSid,
|
||||||
|
LPWSTR lpName,
|
||||||
|
LPDWORD cchName,
|
||||||
|
LPWSTR lpReferencedDomainName,
|
||||||
|
LPDWORD cchReferencedDomainName,
|
||||||
|
PSID_NAME_USE peUse)
|
||||||
|
{
|
||||||
|
DPRINT1("LookupAccountSidW is unimplemented, but returns success\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* LookupPrivilegeValueA EXPORTED
|
||||||
|
*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL STDCALL
|
||||||
|
LookupPrivilegeValueA (LPCSTR lpSystemName,
|
||||||
|
LPCSTR lpName,
|
||||||
|
PLUID lpLuid)
|
||||||
|
{
|
||||||
|
UNICODE_STRING SystemName;
|
||||||
|
UNICODE_STRING Name;
|
||||||
|
BOOL Result;
|
||||||
|
|
||||||
|
/* Remote system? */
|
||||||
|
if (lpSystemName != NULL)
|
||||||
|
{
|
||||||
|
RtlCreateUnicodeStringFromAsciiz (&SystemName,
|
||||||
|
(LPSTR)lpSystemName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check the privilege name is not NULL */
|
||||||
|
if (lpName == NULL)
|
||||||
|
{
|
||||||
|
SetLastError (ERROR_INVALID_PARAMETER);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
RtlCreateUnicodeStringFromAsciiz (&Name,
|
||||||
|
(LPSTR)lpName);
|
||||||
|
|
||||||
|
Result = LookupPrivilegeValueW ((lpSystemName != NULL) ? SystemName.Buffer : NULL,
|
||||||
|
Name.Buffer,
|
||||||
|
lpLuid);
|
||||||
|
|
||||||
|
RtlFreeUnicodeString (&Name);
|
||||||
|
|
||||||
|
/* Remote system? */
|
||||||
|
if (lpSystemName != NULL)
|
||||||
|
{
|
||||||
|
RtlFreeUnicodeString (&SystemName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* LookupPrivilegeValueW EXPORTED
|
||||||
|
*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL STDCALL
|
||||||
|
LookupPrivilegeValueW (LPCWSTR lpSystemName,
|
||||||
|
LPCWSTR lpName,
|
||||||
|
PLUID lpLuid)
|
||||||
|
{
|
||||||
|
SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* LookupPrivilegeDisplayNameA EXPORTED
|
||||||
|
*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL STDCALL
|
||||||
|
LookupPrivilegeDisplayNameA (LPCSTR lpSystemName,
|
||||||
|
LPCSTR lpName,
|
||||||
|
LPSTR lpDisplayName,
|
||||||
|
LPDWORD cbDisplayName,
|
||||||
|
LPDWORD lpLanguageId)
|
||||||
|
{
|
||||||
|
SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* LookupPrivilegeDisplayNameW EXPORTED
|
||||||
|
*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL STDCALL
|
||||||
|
LookupPrivilegeDisplayNameW (LPCWSTR lpSystemName,
|
||||||
|
LPCWSTR lpName,
|
||||||
|
LPWSTR lpDisplayName,
|
||||||
|
LPDWORD cbDisplayName,
|
||||||
|
LPDWORD lpLanguageId)
|
||||||
|
{
|
||||||
|
SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* LookupPrivilegeNameA EXPORTED
|
||||||
|
*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL STDCALL
|
||||||
|
LookupPrivilegeNameA (LPCSTR lpSystemName,
|
||||||
|
PLUID lpLuid,
|
||||||
|
LPSTR lpName,
|
||||||
|
LPDWORD cbName)
|
||||||
|
{
|
||||||
|
SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* LookupPrivilegeNameW EXPORTED
|
||||||
|
*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL STDCALL
|
||||||
|
LookupPrivilegeNameW (LPCWSTR lpSystemName,
|
||||||
|
PLUID lpLuid,
|
||||||
|
LPWSTR lpName,
|
||||||
|
LPDWORD cbName)
|
||||||
|
{
|
||||||
|
SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: sec.c,v 1.19 2004/02/25 23:54:13 sedwards Exp $
|
/* $Id: sec.c,v 1.20 2004/03/25 11:30:07 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS system libraries
|
* PROJECT: ReactOS system libraries
|
||||||
|
@ -11,41 +11,11 @@
|
||||||
* Created 01/11/98
|
* Created 01/11/98
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <debug.h>
|
|
||||||
#define NTOS_MODE_USER
|
#define NTOS_MODE_USER
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <ntos.h>
|
#include <ntos.h>
|
||||||
|
|
||||||
/******************************************************************************
|
#include <debug.h>
|
||||||
* GetFileSecurityA [ADVAPI32.@]
|
|
||||||
*
|
|
||||||
* Obtains Specified information about the security of a file or directory.
|
|
||||||
*
|
|
||||||
* PARAMS
|
|
||||||
* lpFileName [I] Name of the file to get info for
|
|
||||||
* RequestedInformation [I] SE_ flags from "winnt.h"
|
|
||||||
* pSecurityDescriptor [O] Destination for security information
|
|
||||||
* nLength [I] Length of pSecurityDescriptor
|
|
||||||
* lpnLengthNeeded [O] Destination for length of returned security information
|
|
||||||
*
|
|
||||||
* RETURNS
|
|
||||||
* Success: TRUE. pSecurityDescriptor contains the requested information.
|
|
||||||
* Failure: FALSE. lpnLengthNeeded contains the required space to return the info.
|
|
||||||
*
|
|
||||||
* NOTES
|
|
||||||
* The information returned is constrained by the callers access rights and
|
|
||||||
* privileges.
|
|
||||||
*/
|
|
||||||
BOOL WINAPI
|
|
||||||
GetFileSecurityA( LPCSTR lpFileName,
|
|
||||||
SECURITY_INFORMATION RequestedInformation,
|
|
||||||
PSECURITY_DESCRIPTOR pSecurityDescriptor,
|
|
||||||
DWORD nLength, LPDWORD lpnLengthNeeded )
|
|
||||||
{
|
|
||||||
DPRINT("GetFileSecurityW : stub\n");
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
|
@ -320,18 +290,6 @@ MakeSelfRelativeSD (
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* SetFileSecurityA [ADVAPI32.@]
|
|
||||||
* Sets the security of a file or directory
|
|
||||||
*/
|
|
||||||
BOOL STDCALL SetFileSecurityA( LPCSTR lpFileName,
|
|
||||||
SECURITY_INFORMATION RequestedInformation,
|
|
||||||
PSECURITY_DESCRIPTOR pSecurityDescriptor)
|
|
||||||
{
|
|
||||||
DPRINT("SetFileSecurityA : stub\n");
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: sid.c,v 1.11 2004/03/10 21:34:42 fireball Exp $
|
/* $Id: sid.c,v 1.12 2004/03/25 11:30:07 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS system libraries
|
* PROJECT: ReactOS system libraries
|
||||||
|
@ -24,9 +24,10 @@ AllocateLocallyUniqueId(PLUID Luid)
|
||||||
if (!NT_SUCCESS (Status))
|
if (!NT_SUCCESS (Status))
|
||||||
{
|
{
|
||||||
SetLastError (RtlNtStatusToDosError (Status));
|
SetLastError (RtlNtStatusToDosError (Status));
|
||||||
return(FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
return(TRUE);
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,8 +35,7 @@ AllocateLocallyUniqueId(PLUID Luid)
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL STDCALL
|
BOOL STDCALL
|
||||||
AllocateAndInitializeSid (
|
AllocateAndInitializeSid (PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
|
||||||
PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
|
|
||||||
BYTE nSubAuthorityCount,
|
BYTE nSubAuthorityCount,
|
||||||
DWORD dwSubAuthority0,
|
DWORD dwSubAuthority0,
|
||||||
DWORD dwSubAuthority1,
|
DWORD dwSubAuthority1,
|
||||||
|
@ -45,8 +45,7 @@ AllocateAndInitializeSid (
|
||||||
DWORD dwSubAuthority5,
|
DWORD dwSubAuthority5,
|
||||||
DWORD dwSubAuthority6,
|
DWORD dwSubAuthority6,
|
||||||
DWORD dwSubAuthority7,
|
DWORD dwSubAuthority7,
|
||||||
PSID *pSid
|
PSID *pSid)
|
||||||
)
|
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
@ -74,13 +73,10 @@ AllocateAndInitializeSid (
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL STDCALL
|
||||||
STDCALL
|
CopySid (DWORD nDestinationSidLength,
|
||||||
CopySid (
|
|
||||||
DWORD nDestinationSidLength,
|
|
||||||
PSID pDestinationSid,
|
PSID pDestinationSid,
|
||||||
PSID pSourceSid
|
PSID pSourceSid)
|
||||||
)
|
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
@ -100,25 +96,20 @@ CopySid (
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL STDCALL
|
||||||
STDCALL
|
EqualPrefixSid (PSID pSid1,
|
||||||
EqualPrefixSid (
|
PSID pSid2)
|
||||||
PSID pSid1,
|
|
||||||
PSID pSid2
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
return RtlEqualPrefixSid (pSid1, pSid2);
|
return RtlEqualPrefixSid (pSid1, pSid2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL STDCALL
|
||||||
STDCALL
|
EqualSid (PSID pSid1,
|
||||||
EqualSid (
|
PSID pSid2)
|
||||||
PSID pSid1,
|
|
||||||
PSID pSid2
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
return RtlEqualSid (pSid1, pSid2);
|
return RtlEqualSid (pSid1, pSid2);
|
||||||
}
|
}
|
||||||
|
@ -127,11 +118,8 @@ EqualSid (
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
PVOID
|
PVOID STDCALL
|
||||||
STDCALL
|
FreeSid (PSID pSid)
|
||||||
FreeSid (
|
|
||||||
PSID pSid
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
return RtlFreeSid (pSid);
|
return RtlFreeSid (pSid);
|
||||||
}
|
}
|
||||||
|
@ -140,11 +128,8 @@ FreeSid (
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD STDCALL
|
||||||
STDCALL
|
GetLengthSid (PSID pSid)
|
||||||
GetLengthSid (
|
|
||||||
PSID pSid
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
return (DWORD)RtlLengthSid (pSid);
|
return (DWORD)RtlLengthSid (pSid);
|
||||||
}
|
}
|
||||||
|
@ -153,11 +138,8 @@ GetLengthSid (
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
PSID_IDENTIFIER_AUTHORITY
|
PSID_IDENTIFIER_AUTHORITY STDCALL
|
||||||
STDCALL
|
GetSidIdentifierAuthority (PSID pSid)
|
||||||
GetSidIdentifierAuthority (
|
|
||||||
PSID pSid
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
return RtlIdentifierAuthoritySid (pSid);
|
return RtlIdentifierAuthoritySid (pSid);
|
||||||
}
|
}
|
||||||
|
@ -166,11 +148,8 @@ GetSidIdentifierAuthority (
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD STDCALL
|
||||||
STDCALL
|
GetSidLengthRequired (UCHAR nSubAuthorityCount)
|
||||||
GetSidLengthRequired (
|
|
||||||
UCHAR nSubAuthorityCount
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
return (DWORD)RtlLengthRequiredSid (nSubAuthorityCount);
|
return (DWORD)RtlLengthRequiredSid (nSubAuthorityCount);
|
||||||
}
|
}
|
||||||
|
@ -179,12 +158,9 @@ GetSidLengthRequired (
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
PDWORD
|
PDWORD STDCALL
|
||||||
STDCALL
|
GetSidSubAuthority (PSID pSid,
|
||||||
GetSidSubAuthority (
|
DWORD nSubAuthority)
|
||||||
PSID pSid,
|
|
||||||
DWORD nSubAuthority
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
return (PDWORD)RtlSubAuthoritySid (pSid, nSubAuthority);
|
return (PDWORD)RtlSubAuthoritySid (pSid, nSubAuthority);
|
||||||
}
|
}
|
||||||
|
@ -193,11 +169,8 @@ GetSidSubAuthority (
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
PUCHAR
|
PUCHAR STDCALL
|
||||||
STDCALL
|
GetSidSubAuthorityCount (PSID pSid)
|
||||||
GetSidSubAuthorityCount (
|
|
||||||
PSID pSid
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
return RtlSubAuthorityCountSid (pSid);
|
return RtlSubAuthorityCountSid (pSid);
|
||||||
}
|
}
|
||||||
|
@ -206,13 +179,10 @@ GetSidSubAuthorityCount (
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL STDCALL
|
||||||
STDCALL
|
InitializeSid (PSID Sid,
|
||||||
InitializeSid (
|
|
||||||
PSID Sid,
|
|
||||||
PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
|
PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
|
||||||
BYTE nSubAuthorityCount
|
BYTE nSubAuthorityCount)
|
||||||
)
|
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
@ -235,38 +205,7 @@ InitializeSid (
|
||||||
BOOL STDCALL
|
BOOL STDCALL
|
||||||
IsValidSid (PSID pSid)
|
IsValidSid (PSID pSid)
|
||||||
{
|
{
|
||||||
return((BOOL)RtlValidSid(pSid));
|
return (BOOL)RtlValidSid (pSid);
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* LookupAccountSidA [ADVAPI32.@]
|
|
||||||
*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOL STDCALL
|
|
||||||
LookupAccountSidA(LPCSTR lpSystemName, PSID lpSid, LPSTR lpName,
|
|
||||||
LPDWORD cchName, LPSTR lpReferencedDomainName,
|
|
||||||
LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse)
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
DPRINT1("LookupAccountSidA is unimplemented, but returns success\n");
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* LookupAccountSidW [ADVAPI32.@]
|
|
||||||
*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOL STDCALL
|
|
||||||
LookupAccountSidW(LPCWSTR lpSystemName, PSID lpSid, LPWSTR lpName,
|
|
||||||
LPDWORD cchName, LPWSTR lpReferencedDomainName,
|
|
||||||
LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse)
|
|
||||||
{
|
|
||||||
DPRINT1("LookupAccountSidW is unimplemented, but returns success\n");
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -20,28 +20,23 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define __USE_W32API
|
#define NTOS_MODE_USER
|
||||||
#define _WIN32_WINNT 0x0501
|
#include <ntos.h>
|
||||||
|
#include <windows.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
#include "windef.h"
|
#define NDEBUG
|
||||||
#include "winbase.h"
|
#include <debug.h>
|
||||||
#include "winerror.h"
|
|
||||||
#include "winreg.h"
|
|
||||||
#include "wine/winternl.h"
|
|
||||||
|
|
||||||
#define YDEBUG
|
|
||||||
#include "wine/debug.h"
|
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(advapi);
|
|
||||||
WINE_DECLARE_DEBUG_CHANNEL(eventlog);
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* BackupEventLogA [ADVAPI32.@]
|
* BackupEventLogA [ADVAPI32.@]
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI BackupEventLogA( HANDLE hEventLog, LPCSTR lpBackupFileName )
|
BOOL WINAPI
|
||||||
|
BackupEventLogA (HANDLE hEventLog,
|
||||||
|
LPCSTR lpBackupFileName)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
DPRINT1("stub\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,39 +48,49 @@ BOOL WINAPI BackupEventLogA( HANDLE hEventLog, LPCSTR lpBackupFileName )
|
||||||
* lpBackupFileName []
|
* lpBackupFileName []
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI
|
BOOL WINAPI
|
||||||
BackupEventLogW( HANDLE hEventLog, LPCWSTR lpBackupFileName )
|
BackupEventLogW (HANDLE hEventLog,
|
||||||
|
LPCWSTR lpBackupFileName)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
DPRINT1("stub\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* ClearEventLogA [ADVAPI32.@]
|
* ClearEventLogA [ADVAPI32.@]
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI ClearEventLogA ( HANDLE hEventLog, LPCSTR lpBackupFileName )
|
BOOL WINAPI
|
||||||
|
ClearEventLogA (HANDLE hEventLog,
|
||||||
|
LPCSTR lpBackupFileName)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
DPRINT1("stub\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* ClearEventLogW [ADVAPI32.@]
|
* ClearEventLogW [ADVAPI32.@]
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI ClearEventLogW ( HANDLE hEventLog, LPCWSTR lpBackupFileName )
|
BOOL WINAPI
|
||||||
|
ClearEventLogW (HANDLE hEventLog,
|
||||||
|
LPCWSTR lpBackupFileName)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
DPRINT1("stub\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* CloseEventLog [ADVAPI32.@]
|
* CloseEventLog [ADVAPI32.@]
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI CloseEventLog ( HANDLE hEventLog )
|
BOOL WINAPI
|
||||||
|
CloseEventLog (HANDLE hEventLog)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
DPRINT1("stub\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* DeregisterEventSource [ADVAPI32.@]
|
* DeregisterEventSource [ADVAPI32.@]
|
||||||
* Closes a handle to the specified event log
|
* Closes a handle to the specified event log
|
||||||
|
@ -95,12 +100,14 @@ BOOL WINAPI CloseEventLog ( HANDLE hEventLog )
|
||||||
*
|
*
|
||||||
* RETURNS STD
|
* RETURNS STD
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI DeregisterEventSource( HANDLE hEventLog )
|
BOOL WINAPI
|
||||||
|
DeregisterEventSource (HANDLE hEventLog)
|
||||||
{
|
{
|
||||||
FIXME("(%p): stub\n",hEventLog);
|
DPRINT1("(%p): stub\n",hEventLog);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* GetNumberOfEventLogRecords [ADVAPI32.@]
|
* GetNumberOfEventLogRecords [ADVAPI32.@]
|
||||||
*
|
*
|
||||||
|
@ -109,12 +116,14 @@ BOOL WINAPI DeregisterEventSource( HANDLE hEventLog )
|
||||||
* NumberOfRecords []
|
* NumberOfRecords []
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI
|
BOOL WINAPI
|
||||||
GetNumberOfEventLogRecords( HANDLE hEventLog, PDWORD NumberOfRecords )
|
GetNumberOfEventLogRecords (HANDLE hEventLog,
|
||||||
|
PDWORD NumberOfRecords)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
DPRINT1("stub\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* GetOldestEventLogRecord [ADVAPI32.@]
|
* GetOldestEventLogRecord [ADVAPI32.@]
|
||||||
*
|
*
|
||||||
|
@ -123,12 +132,14 @@ GetNumberOfEventLogRecords( HANDLE hEventLog, PDWORD NumberOfRecords )
|
||||||
* OldestRecord []
|
* OldestRecord []
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI
|
BOOL WINAPI
|
||||||
GetOldestEventLogRecord( HANDLE hEventLog, PDWORD OldestRecord )
|
GetOldestEventLogRecord (HANDLE hEventLog,
|
||||||
|
PDWORD OldestRecord)
|
||||||
{
|
{
|
||||||
FIXME(":stub\n");
|
DPRINT1("stub\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* NotifyChangeEventLog [ADVAPI32.@]
|
* NotifyChangeEventLog [ADVAPI32.@]
|
||||||
*
|
*
|
||||||
|
@ -136,22 +147,27 @@ GetOldestEventLogRecord( HANDLE hEventLog, PDWORD OldestRecord )
|
||||||
* hEventLog []
|
* hEventLog []
|
||||||
* hEvent []
|
* hEvent []
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI NotifyChangeEventLog( HANDLE hEventLog, HANDLE hEvent )
|
BOOL WINAPI
|
||||||
|
NotifyChangeEventLog (HANDLE hEventLog,
|
||||||
|
HANDLE hEvent)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
DPRINT1("stub\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* OpenBackupEventLogA [ADVAPI32.@]
|
* OpenBackupEventLogA [ADVAPI32.@]
|
||||||
*/
|
*/
|
||||||
HANDLE WINAPI
|
HANDLE WINAPI
|
||||||
OpenBackupEventLogA( LPCSTR lpUNCServerName, LPCSTR lpFileName )
|
OpenBackupEventLogA (LPCSTR lpUNCServerName,
|
||||||
|
LPCSTR lpFileName)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
DPRINT1("stub\n");
|
||||||
return (HANDLE)1;
|
return (HANDLE)1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* OpenBackupEventLogW [ADVAPI32.@]
|
* OpenBackupEventLogW [ADVAPI32.@]
|
||||||
*
|
*
|
||||||
|
@ -160,21 +176,27 @@ OpenBackupEventLogA( LPCSTR lpUNCServerName, LPCSTR lpFileName )
|
||||||
* lpFileName []
|
* lpFileName []
|
||||||
*/
|
*/
|
||||||
HANDLE WINAPI
|
HANDLE WINAPI
|
||||||
OpenBackupEventLogW( LPCWSTR lpUNCServerName, LPCWSTR lpFileName )
|
OpenBackupEventLogW (LPCWSTR lpUNCServerName,
|
||||||
|
LPCWSTR lpFileName)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
DPRINT1("stub\n");
|
||||||
return (HANDLE)1;
|
return (HANDLE)1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* OpenEventLogA [ADVAPI32.@]
|
* OpenEventLogA [ADVAPI32.@]
|
||||||
*/
|
*/
|
||||||
HANDLE WINAPI OpenEventLogA(LPCSTR uncname,LPCSTR source)
|
HANDLE WINAPI
|
||||||
|
OpenEventLogA (LPCSTR lpUNCServerName,
|
||||||
|
LPCSTR lpSourceName)
|
||||||
{
|
{
|
||||||
FIXME("(%s,%s),stub!\n",uncname,source);
|
DPRINT1("(%s,%s),stub!\n",
|
||||||
|
lpUNCServerName, lpSourceName);
|
||||||
return (HANDLE)0xcafe4242;
|
return (HANDLE)0xcafe4242;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* OpenEventLogW [ADVAPI32.@]
|
* OpenEventLogW [ADVAPI32.@]
|
||||||
*
|
*
|
||||||
|
@ -183,22 +205,31 @@ HANDLE WINAPI OpenEventLogA(LPCSTR uncname,LPCSTR source)
|
||||||
* source []
|
* source []
|
||||||
*/
|
*/
|
||||||
HANDLE WINAPI
|
HANDLE WINAPI
|
||||||
OpenEventLogW( LPCWSTR uncname, LPCWSTR source )
|
OpenEventLogW (LPCWSTR lpUNCServerName,
|
||||||
|
LPCWSTR lpSourceName)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
DPRINT1("stub\n");
|
||||||
return (HANDLE)1;
|
return (HANDLE)1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* ReadEventLogA [ADVAPI32.@]
|
* ReadEventLogA [ADVAPI32.@]
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI ReadEventLogA( HANDLE hEventLog, DWORD dwReadFlags, DWORD dwRecordOffset,
|
BOOL WINAPI
|
||||||
LPVOID lpBuffer, DWORD nNumberOfBytesToRead, DWORD *pnBytesRead, DWORD *pnMinNumberOfBytesNeeded )
|
ReadEventLogA (HANDLE hEventLog,
|
||||||
|
DWORD dwReadFlags,
|
||||||
|
DWORD dwRecordOffset,
|
||||||
|
LPVOID lpBuffer,
|
||||||
|
DWORD nNumberOfBytesToRead,
|
||||||
|
DWORD *pnBytesRead,
|
||||||
|
DWORD *pnMinNumberOfBytesNeeded)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
DPRINT1("stub\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* ReadEventLogW [ADVAPI32.@]
|
* ReadEventLogW [ADVAPI32.@]
|
||||||
*
|
*
|
||||||
|
@ -212,31 +243,45 @@ BOOL WINAPI ReadEventLogA( HANDLE hEventLog, DWORD dwReadFlags, DWORD dwRecordOf
|
||||||
* pnMinNumberOfBytesNeeded []
|
* pnMinNumberOfBytesNeeded []
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI
|
BOOL WINAPI
|
||||||
ReadEventLogW( HANDLE hEventLog, DWORD dwReadFlags, DWORD dwRecordOffset,
|
ReadEventLogW (HANDLE hEventLog,
|
||||||
LPVOID lpBuffer, DWORD nNumberOfBytesToRead,
|
DWORD dwReadFlags,
|
||||||
DWORD *pnBytesRead, DWORD *pnMinNumberOfBytesNeeded )
|
DWORD dwRecordOffset,
|
||||||
|
LPVOID lpBuffer,
|
||||||
|
DWORD nNumberOfBytesToRead,
|
||||||
|
DWORD *pnBytesRead,
|
||||||
|
DWORD *pnMinNumberOfBytesNeeded)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
DPRINT1("stub\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* RegisterEventSourceA [ADVAPI32.@]
|
* RegisterEventSourceA [ADVAPI32.@]
|
||||||
*/
|
*/
|
||||||
HANDLE WINAPI RegisterEventSourceA( LPCSTR lpUNCServerName, LPCSTR lpSourceName )
|
HANDLE WINAPI
|
||||||
|
RegisterEventSourceA (LPCSTR lpUNCServerName,
|
||||||
|
LPCSTR lpSourceName)
|
||||||
{
|
{
|
||||||
|
UNICODE_STRING UNCServerName;
|
||||||
UNICODE_STRING lpUNCServerNameW;
|
UNICODE_STRING SourceName;
|
||||||
UNICODE_STRING lpSourceNameW;
|
|
||||||
HANDLE ret;
|
HANDLE ret;
|
||||||
RtlCreateUnicodeStringFromAsciiz(&lpUNCServerNameW, lpUNCServerName);
|
|
||||||
RtlCreateUnicodeStringFromAsciiz(&lpSourceNameW, lpSourceName);
|
RtlCreateUnicodeStringFromAsciiz (&UNCServerName,
|
||||||
ret = RegisterEventSourceW(lpUNCServerNameW.Buffer,lpSourceNameW.Buffer);
|
(PSTR)lpUNCServerName);
|
||||||
RtlFreeUnicodeString (&lpUNCServerNameW);
|
RtlCreateUnicodeStringFromAsciiz (&SourceName,
|
||||||
RtlFreeUnicodeString (&lpSourceNameW);
|
(PSTR)lpSourceName);
|
||||||
|
|
||||||
|
ret = RegisterEventSourceW (UNCServerName.Buffer,
|
||||||
|
SourceName.Buffer);
|
||||||
|
|
||||||
|
RtlFreeUnicodeString (&UNCServerName);
|
||||||
|
RtlFreeUnicodeString (&SourceName);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* RegisterEventSourceW [ADVAPI32.@]
|
* RegisterEventSourceW [ADVAPI32.@]
|
||||||
* Returns a registered handle to an event log
|
* Returns a registered handle to an event log
|
||||||
|
@ -250,43 +295,79 @@ HANDLE WINAPI RegisterEventSourceA( LPCSTR lpUNCServerName, LPCSTR lpSourceName
|
||||||
* Failure: NULL
|
* Failure: NULL
|
||||||
*/
|
*/
|
||||||
HANDLE WINAPI
|
HANDLE WINAPI
|
||||||
RegisterEventSourceW( LPCWSTR lpUNCServerName, LPCWSTR lpSourceName )
|
RegisterEventSourceW (LPCWSTR lpUNCServerName,
|
||||||
|
LPCWSTR lpSourceName)
|
||||||
{
|
{
|
||||||
FIXME("(%s,%s): stub\n", debugstr_w(lpUNCServerName),
|
DPRINT1("(%S, %S): stub\n",
|
||||||
debugstr_w(lpSourceName));
|
lpUNCServerName, lpSourceName);
|
||||||
return (HANDLE)1;
|
return (HANDLE)1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* ReportEventA [ADVAPI32.@]
|
* ReportEventA [ADVAPI32.@]
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI ReportEventA ( HANDLE hEventLog, WORD wType, WORD wCategory, DWORD dwEventID,
|
BOOL WINAPI
|
||||||
PSID lpUserSid, WORD wNumStrings, DWORD dwDataSize, LPCSTR *lpStrings, LPVOID lpRawData)
|
ReportEventA (HANDLE hEventLog,
|
||||||
|
WORD wType,
|
||||||
|
WORD wCategory,
|
||||||
|
DWORD dwEventID,
|
||||||
|
PSID lpUserSid,
|
||||||
|
WORD wNumStrings,
|
||||||
|
DWORD dwDataSize,
|
||||||
|
LPCSTR *lpStrings,
|
||||||
|
LPVOID lpRawData)
|
||||||
{
|
{
|
||||||
LPCWSTR *wideStrArray;
|
LPCWSTR *wideStrArray;
|
||||||
UNICODE_STRING str;
|
UNICODE_STRING str;
|
||||||
int i;
|
int i;
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
|
||||||
if (wNumStrings == 0) return TRUE;
|
if (wNumStrings == 0)
|
||||||
if (!lpStrings) return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
if (lpStrings == NULL)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
wideStrArray = HeapAlloc (GetProcessHeap (),
|
||||||
|
0,
|
||||||
|
sizeof(LPCWSTR) * wNumStrings);
|
||||||
|
|
||||||
wideStrArray = HeapAlloc(GetProcessHeap(), 0, sizeof(LPCWSTR) * wNumStrings);
|
|
||||||
for (i = 0; i < wNumStrings; i++)
|
for (i = 0; i < wNumStrings; i++)
|
||||||
{
|
{
|
||||||
RtlCreateUnicodeStringFromAsciiz(&str, lpStrings[i]);
|
RtlCreateUnicodeStringFromAsciiz (&str,
|
||||||
|
(PSTR)lpStrings[i]);
|
||||||
wideStrArray[i] = str.Buffer;
|
wideStrArray[i] = str.Buffer;
|
||||||
}
|
}
|
||||||
ret = ReportEventW(hEventLog, wType, wCategory, dwEventID, lpUserSid,
|
|
||||||
wNumStrings, dwDataSize, wideStrArray, lpRawData);
|
ret = ReportEventW (hEventLog,
|
||||||
|
wType,
|
||||||
|
wCategory,
|
||||||
|
dwEventID,
|
||||||
|
lpUserSid,
|
||||||
|
wNumStrings,
|
||||||
|
dwDataSize,
|
||||||
|
wideStrArray,
|
||||||
|
lpRawData);
|
||||||
|
|
||||||
for (i = 0; i < wNumStrings; i++)
|
for (i = 0; i < wNumStrings; i++)
|
||||||
{
|
{
|
||||||
if (wideStrArray[i]) HeapFree( GetProcessHeap(), 0, (LPSTR)wideStrArray[i] );
|
if (wideStrArray[i])
|
||||||
|
{
|
||||||
|
HeapFree (GetProcessHeap (),
|
||||||
|
0,
|
||||||
|
(LPSTR)wideStrArray[i]);
|
||||||
}
|
}
|
||||||
HeapFree(GetProcessHeap(), 0, wideStrArray);
|
}
|
||||||
|
|
||||||
|
HeapFree (GetProcessHeap(),
|
||||||
|
0,
|
||||||
|
wideStrArray);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* ReportEventW [ADVAPI32.@]
|
* ReportEventW [ADVAPI32.@]
|
||||||
*
|
*
|
||||||
|
@ -302,35 +383,47 @@ BOOL WINAPI ReportEventA ( HANDLE hEventLog, WORD wType, WORD wCategory, DWORD d
|
||||||
* lpRawData []
|
* lpRawData []
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI
|
BOOL WINAPI
|
||||||
ReportEventW( HANDLE hEventLog, WORD wType, WORD wCategory,
|
ReportEventW (HANDLE hEventLog,
|
||||||
DWORD dwEventID, PSID lpUserSid, WORD wNumStrings,
|
WORD wType,
|
||||||
DWORD dwDataSize, LPCWSTR *lpStrings, LPVOID lpRawData )
|
WORD wCategory,
|
||||||
|
DWORD dwEventID,
|
||||||
|
PSID lpUserSid,
|
||||||
|
WORD wNumStrings,
|
||||||
|
DWORD dwDataSize,
|
||||||
|
LPCWSTR *lpStrings,
|
||||||
|
LPVOID lpRawData)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* partial stub */
|
/* partial stub */
|
||||||
|
|
||||||
if (wNumStrings == 0) return TRUE;
|
if (wNumStrings == 0)
|
||||||
if (!lpStrings) return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
if (lpStrings == NULL)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
for (i = 0; i < wNumStrings; i++)
|
for (i = 0; i < wNumStrings; i++)
|
||||||
{
|
{
|
||||||
switch (wType)
|
switch (wType)
|
||||||
{
|
{
|
||||||
case EVENTLOG_SUCCESS:
|
case EVENTLOG_SUCCESS:
|
||||||
TRACE_(eventlog)("%s\n", debugstr_w(lpStrings[i]));
|
DPRINT1("Success: %S\n", lpStrings[i]);
|
||||||
break;
|
break;
|
||||||
case EVENTLOG_ERROR_TYPE:
|
|
||||||
ERR_(eventlog)("%s\n", debugstr_w(lpStrings[i]));
|
|
||||||
break;
|
|
||||||
case EVENTLOG_WARNING_TYPE:
|
|
||||||
WARN_(eventlog)("%s\n", debugstr_w(lpStrings[i]));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
TRACE_(eventlog)("%s\n", debugstr_w(lpStrings[i]));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
|
case EVENTLOG_ERROR_TYPE:
|
||||||
|
DPRINT1("Error: %S\n", lpStrings[i]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EVENTLOG_WARNING_TYPE:
|
||||||
|
DPRINT1("Warning: %S\n", lpStrings[i]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
DPRINT1("Type %hu: %S\n", wType, lpStrings[i]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: privilege.c,v 1.6 2004/02/25 14:25:11 ekohl Exp $
|
/* $Id: privilege.c,v 1.7 2004/03/25 11:30:07 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS system libraries
|
* PROJECT: ReactOS system libraries
|
||||||
|
@ -8,138 +8,11 @@
|
||||||
* UPDATE HISTORY:
|
* UPDATE HISTORY:
|
||||||
* 20010317 ea stubs
|
* 20010317 ea stubs
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
* LookupPrivilegeValueA EXPORTED
|
|
||||||
*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL STDCALL
|
|
||||||
LookupPrivilegeValueA (LPCSTR lpSystemName,
|
|
||||||
LPCSTR lpName,
|
|
||||||
PLUID lpLuid)
|
|
||||||
{
|
|
||||||
UNICODE_STRING SystemName;
|
|
||||||
UNICODE_STRING Name;
|
|
||||||
BOOL Result;
|
|
||||||
|
|
||||||
/* Remote system? */
|
|
||||||
if (lpSystemName != NULL)
|
|
||||||
{
|
|
||||||
RtlCreateUnicodeStringFromAsciiz (&SystemName,
|
|
||||||
(LPSTR)lpSystemName);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check the privilege name is not NULL */
|
|
||||||
if (lpName == NULL)
|
|
||||||
{
|
|
||||||
SetLastError (ERROR_INVALID_PARAMETER);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
RtlCreateUnicodeStringFromAsciiz (&Name,
|
|
||||||
(LPSTR)lpName);
|
|
||||||
|
|
||||||
Result = LookupPrivilegeValueW ((lpSystemName != NULL) ? SystemName.Buffer : NULL,
|
|
||||||
Name.Buffer,
|
|
||||||
lpLuid);
|
|
||||||
|
|
||||||
RtlFreeUnicodeString (&Name);
|
|
||||||
|
|
||||||
/* Remote system? */
|
|
||||||
if (lpSystemName != NULL)
|
|
||||||
{
|
|
||||||
RtlFreeUnicodeString (&SystemName);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
* LookupPrivilegeValueW EXPORTED
|
|
||||||
*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOL STDCALL
|
|
||||||
LookupPrivilegeValueW (LPCWSTR lpSystemName,
|
|
||||||
LPCWSTR lpName,
|
|
||||||
PLUID lpLuid)
|
|
||||||
{
|
|
||||||
SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
* LookupPrivilegeDisplayNameA EXPORTED
|
|
||||||
*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOL STDCALL
|
|
||||||
LookupPrivilegeDisplayNameA (LPCSTR lpSystemName,
|
|
||||||
LPCSTR lpName,
|
|
||||||
LPSTR lpDisplayName,
|
|
||||||
LPDWORD cbDisplayName,
|
|
||||||
LPDWORD lpLanguageId)
|
|
||||||
{
|
|
||||||
SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
* LookupPrivilegeDisplayNameW EXPORTED
|
|
||||||
*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOL STDCALL
|
|
||||||
LookupPrivilegeDisplayNameW (LPCWSTR lpSystemName,
|
|
||||||
LPCWSTR lpName,
|
|
||||||
LPWSTR lpDisplayName,
|
|
||||||
LPDWORD cbDisplayName,
|
|
||||||
LPDWORD lpLanguageId)
|
|
||||||
{
|
|
||||||
SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
* LookupPrivilegeNameA EXPORTED
|
|
||||||
*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOL STDCALL
|
|
||||||
LookupPrivilegeNameA (LPCSTR lpSystemName,
|
|
||||||
PLUID lpLuid,
|
|
||||||
LPSTR lpName,
|
|
||||||
LPDWORD cbName)
|
|
||||||
{
|
|
||||||
SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
* LookupPrivilegeNameW EXPORTED
|
|
||||||
*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOL STDCALL
|
|
||||||
LookupPrivilegeNameW (LPCWSTR lpSystemName,
|
|
||||||
PLUID lpLuid,
|
|
||||||
LPWSTR lpName,
|
|
||||||
LPDWORD cbName)
|
|
||||||
{
|
|
||||||
SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* PrivilegeCheck EXPORTED
|
* PrivilegeCheck EXPORTED
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: token.c,v 1.9 2004/02/25 14:25:11 ekohl Exp $
|
/* $Id: token.c,v 1.10 2004/03/25 11:30:07 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS system libraries
|
* PROJECT: ReactOS system libraries
|
||||||
|
|
Loading…
Reference in a new issue