- Implement ImpersonateLoggedOnUser().

- Moved some security related functions to better places.

svn path=/trunk/; revision=8870
This commit is contained in:
Eric Kohl 2004-03-25 11:30:07 +00:00
parent 8a8167ab4d
commit 9e558fcc6a
7 changed files with 663 additions and 509 deletions

View file

@ -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 \

View file

@ -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 */

View file

@ -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

View file

@ -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 */

View file

@ -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;
} }

View file

@ -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
* *

View file

@ -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