From 06e579a94463ac24b2c5efd58133e9d62f14cbbb Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Thu, 17 Jun 2004 09:07:12 +0000 Subject: [PATCH] Compile advapi32 using w32api. svn path=/trunk/; revision=9695 --- reactos/include/accctrl.h | 6 + reactos/include/ascii.h | 6 +- reactos/include/ntsecapi.h | 27 +- reactos/include/unicode.h | 6 +- reactos/lib/advapi32/makefile | 6 +- reactos/lib/advapi32/misc/hwprofiles.c | 8 +- reactos/lib/advapi32/misc/logon.c | 14 +- reactos/lib/advapi32/reg/reg.c | 70 ++-- reactos/lib/advapi32/sec/lsa.c | 445 ++++++++++++------------- reactos/lib/advapi32/token/privilege.c | 5 +- reactos/w32api/include/ntsecapi.h | 52 ++- 11 files changed, 345 insertions(+), 300 deletions(-) diff --git a/reactos/include/accctrl.h b/reactos/include/accctrl.h index 7c3b60998f6..2ffe9374e54 100644 --- a/reactos/include/accctrl.h +++ b/reactos/include/accctrl.h @@ -16,6 +16,10 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#ifdef __USE_W32API +#include_next +#else + #ifndef __WINE_ACCCTRL_H #define __WINE_ACCCTRL_H @@ -463,3 +467,5 @@ typedef struct _FN_OBJECT_MGR_FUNCTIONS #endif #endif /* __WINE_ACCCTRL_H */ + +#endif /* __USE_W32API */ diff --git a/reactos/include/ascii.h b/reactos/include/ascii.h index 8a05a88fb94..c694424e14f 100644 --- a/reactos/include/ascii.h +++ b/reactos/include/ascii.h @@ -94,9 +94,9 @@ GetCurrentHwProfileA ( WINBOOL STDCALL LogonUserA ( - LPCSTR lpszUsername, - LPCSTR lpszDomain, - LPCSTR lpszPassword, + LPSTR lpszUsername, + LPSTR lpszDomain, + LPSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken diff --git a/reactos/include/ntsecapi.h b/reactos/include/ntsecapi.h index eccd0ccd379..3eca6a7ee80 100644 --- a/reactos/include/ntsecapi.h +++ b/reactos/include/ntsecapi.h @@ -122,18 +122,19 @@ typedef PVOID LSA_HANDLE, *PLSA_HANDLE; typedef enum { - PolicyAuditLogInformation = 1, - PolicyAuditEventsInformation, - PolicyPrimaryDomainInformation, - PolicyPdAccountInformation, - PolicyAccountDomainInformation, - PolicyLsaServerRoleInformation, - PolicyReplicaSourceInformation, - PolicyDefaultQuotaInformation, - PolicyModificationInformation, - PolicyAuditFullSetInformation, - PolicyAuditFullQueryInformation, - PolicyDnsDomainInformation + PolicyAuditLogInformation = 1, + PolicyAuditEventsInformation, + PolicyPrimaryDomainInformation, + PolicyPdAccountInformation, + PolicyAccountDomainInformation, + PolicyLsaServerRoleInformation, + PolicyReplicaSourceInformation, + PolicyDefaultQuotaInformation, + PolicyModificationInformation, + PolicyAuditFullSetInformation, + PolicyAuditFullQueryInformation, + PolicyDnsDomainInformation, + PolicyEfsInformation } POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS; typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS; @@ -484,7 +485,7 @@ STDCALL LsaRemoveAccountRights( LSA_HANDLE PolicyHandle, PSID AccountSid, - WINBOOL AllRights, + BOOLEAN AllRights, PLSA_UNICODE_STRING UserRights, ULONG CountOfRights ); diff --git a/reactos/include/unicode.h b/reactos/include/unicode.h index a25ac4d0500..e7d5e7471f2 100644 --- a/reactos/include/unicode.h +++ b/reactos/include/unicode.h @@ -95,9 +95,9 @@ GetCurrentHwProfileW ( WINBOOL STDCALL LogonUserW ( - LPCWSTR lpszUsername, - LPCWSTR lpszDomain, - LPCWSTR lpszPassword, + LPWSTR lpszUsername, + LPWSTR lpszDomain, + LPWSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken diff --git a/reactos/lib/advapi32/makefile b/reactos/lib/advapi32/makefile index e4ff8528f03..9a96ad9753c 100644 --- a/reactos/lib/advapi32/makefile +++ b/reactos/lib/advapi32/makefile @@ -1,4 +1,4 @@ -# $Id: makefile,v 1.40 2004/05/29 21:24:42 hbirr Exp $ +# $Id: makefile,v 1.41 2004/06/17 09:07:12 ekohl Exp $ PATH_TO_TOP = ../.. @@ -6,12 +6,12 @@ TARGET_TYPE = dynlink TARGET_NAME = advapi32 -TARGET_CFLAGS = -Wall -Werror -fno-builtin +TARGET_CFLAGS = -Wall -Werror -fno-builtin -D__USE_W32API # TARGET_CFLAGS += -DUNICODE TARGET_LFLAGS = -nostartfiles -nostdlib -TARGET_SDKLIBS = ntdll.a kernel32.a libwine.a msvcrt.a +TARGET_SDKLIBS = ntdll.a kernel32.a TARGET_BASE = $(TARGET_BASE_LIB_ADVAPI32) diff --git a/reactos/lib/advapi32/misc/hwprofiles.c b/reactos/lib/advapi32/misc/hwprofiles.c index f0f18713442..d89b9d8bbff 100644 --- a/reactos/lib/advapi32/misc/hwprofiles.c +++ b/reactos/lib/advapi32/misc/hwprofiles.c @@ -1,4 +1,4 @@ -/* $Id: hwprofiles.c,v 1.1 2004/02/25 23:12:39 sedwards Exp $ +/* $Id: hwprofiles.c,v 1.2 2004/06/17 09:07:12 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -8,8 +8,9 @@ * UPDATE HISTORY: * 20042502 */ -#include +#include #include +#include /****************************************************************************** * GetCurrentHwProfileA [ADVAPI32.@] @@ -23,7 +24,8 @@ * Success: TRUE. pInfo is updated with the hardware profile details. * Failure: FALSE. */ -BOOL STDCALL GetCurrentHwProfileA(LPHW_PROFILE_INFOA pInfo) +BOOL STDCALL +GetCurrentHwProfileA(LPHW_PROFILE_INFOA pInfo) { DPRINT("GetCurrentHwProfileA stub\n"); return 1; diff --git a/reactos/lib/advapi32/misc/logon.c b/reactos/lib/advapi32/misc/logon.c index 83a12a97402..73fc8f19ae3 100644 --- a/reactos/lib/advapi32/misc/logon.c +++ b/reactos/lib/advapi32/misc/logon.c @@ -1,4 +1,4 @@ -/* $Id: logon.c,v 1.5 2004/03/09 15:04:28 ekohl Exp $ +/* $Id: logon.c,v 1.6 2004/06/17 09:07:12 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -130,9 +130,9 @@ CreateProcessAsUserW (HANDLE hToken, * @unimplemented */ BOOL STDCALL -LogonUserA (LPCSTR lpszUsername, - LPCSTR lpszDomain, - LPCSTR lpszPassword, +LogonUserA (LPSTR lpszUsername, + LPSTR lpszDomain, + LPSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken) @@ -241,9 +241,9 @@ SamGetUserSid (LPCWSTR UserName, * @unimplemented */ BOOL STDCALL -LogonUserW (LPCWSTR lpszUsername, - LPCWSTR lpszDomain, - LPCWSTR lpszPassword, +LogonUserW (LPWSTR lpszUsername, + LPWSTR lpszDomain, + LPWSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken) diff --git a/reactos/lib/advapi32/reg/reg.c b/reactos/lib/advapi32/reg/reg.c index 843e9410f92..1f720b98c34 100644 --- a/reactos/lib/advapi32/reg/reg.c +++ b/reactos/lib/advapi32/reg/reg.c @@ -1,4 +1,4 @@ -/* $Id: reg.c,v 1.46 2004/04/03 13:12:43 gvg Exp $ +/* $Id: reg.c,v 1.47 2004/06/17 09:07:12 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -37,7 +37,7 @@ static HANDLE ProcessHeap; /* PROTOTYPES ***************************************************************/ -static NTSTATUS MapDefaultKey (PHKEY ParentKey, HKEY Key); +static NTSTATUS MapDefaultKey (PHANDLE ParentKey, HKEY Key); static VOID CloseDefaultKeys(VOID); static NTSTATUS OpenClassesRootKey(PHANDLE KeyHandle); @@ -81,7 +81,7 @@ RegCleanup (VOID) static NTSTATUS -MapDefaultKey (PHKEY RealKey, +MapDefaultKey (PHANDLE RealKey, HKEY Key) { PHANDLE Handle; @@ -92,7 +92,7 @@ MapDefaultKey (PHKEY RealKey, if (((ULONG)Key & 0xF0000000) != 0x80000000) { - *RealKey = Key; + *RealKey = (HANDLE)Key; return STATUS_SUCCESS; } @@ -148,7 +148,7 @@ MapDefaultKey (PHKEY RealKey, if (NT_SUCCESS(Status)) { - *RealKey = (HKEY)*Handle; + *RealKey = *Handle; } return Status; @@ -332,7 +332,7 @@ RegCreateKeyExA (HKEY hKey, UNICODE_STRING SubKeyString; UNICODE_STRING ClassString; OBJECT_ATTRIBUTES Attributes; - HKEY ParentKey; + HANDLE ParentKey; LONG ErrorCode; NTSTATUS Status; @@ -361,7 +361,7 @@ RegCreateKeyExA (HKEY hKey, OBJ_CASE_INSENSITIVE, (HANDLE)ParentKey, (PSECURITY_DESCRIPTOR)lpSecurityAttributes); - Status = NtCreateKey (phkResult, + Status = NtCreateKey ((PHANDLE)phkResult, samDesired, &Attributes, 0, @@ -404,7 +404,7 @@ RegCreateKeyExW (HKEY hKey, UNICODE_STRING SubKeyString; UNICODE_STRING ClassString; OBJECT_ATTRIBUTES Attributes; - HKEY ParentKey; + HANDLE ParentKey; LONG ErrorCode; NTSTATUS Status; @@ -430,7 +430,7 @@ RegCreateKeyExW (HKEY hKey, OBJ_CASE_INSENSITIVE, (HANDLE)ParentKey, (PSECURITY_DESCRIPTOR)lpSecurityAttributes); - Status = NtCreateKey (phkResult, + Status = NtCreateKey ((PHANDLE)phkResult, samDesired, &Attributes, 0, @@ -504,7 +504,7 @@ RegDeleteKeyA (HKEY hKey, { OBJECT_ATTRIBUTES ObjectAttributes; UNICODE_STRING SubKeyName; - HKEY ParentKey; + HANDLE ParentKey; HANDLE TargetKey; NTSTATUS Status; LONG ErrorCode; @@ -561,7 +561,7 @@ RegDeleteKeyW (HKEY hKey, { OBJECT_ATTRIBUTES ObjectAttributes; UNICODE_STRING SubKeyName; - HKEY ParentKey; + HANDLE ParentKey; HANDLE TargetKey; NTSTATUS Status; LONG ErrorCode; @@ -615,7 +615,7 @@ RegDeleteValueA (HKEY hKey, LPCSTR lpValueName) { UNICODE_STRING ValueName; - HKEY KeyHandle; + HANDLE KeyHandle; LONG ErrorCode; NTSTATUS Status; @@ -656,7 +656,7 @@ RegDeleteValueW (HKEY hKey, UNICODE_STRING ValueName; NTSTATUS Status; LONG ErrorCode; - HKEY KeyHandle; + HANDLE KeyHandle; Status = MapDefaultKey (&KeyHandle, hKey); @@ -761,7 +761,7 @@ RegEnumKeyExA (HKEY hKey, DWORD ClassLength; DWORD BufferSize; DWORD ResultSize; - HKEY KeyHandle; + HANDLE KeyHandle; NTSTATUS Status; DPRINT("RegEnumKeyExA(hKey 0x%x, dwIndex %d, lpName 0x%x, *lpcbName %d, lpClass 0x%x, lpcbClass %d)\n", @@ -936,7 +936,7 @@ RegEnumKeyExW (HKEY hKey, ULONG ResultSize; ULONG NameLength; ULONG ClassLength; - HKEY KeyHandle; + HANDLE KeyHandle; LONG ErrorCode = ERROR_SUCCESS; NTSTATUS Status; @@ -1088,7 +1088,7 @@ RegEnumValueA (HKEY hKey, ULONG BufferSize; ULONG DataLength; ULONG ResultSize; - HKEY KeyHandle; + HANDLE KeyHandle; LONG ErrorCode; NTSTATUS Status; UNICODE_STRING StringU; @@ -1255,7 +1255,7 @@ RegEnumValueW (HKEY hKey, ULONG BufferSize; ULONG DataLength; ULONG ResultSize; - HKEY KeyHandle; + HANDLE KeyHandle; LONG ErrorCode; NTSTATUS Status; @@ -1373,7 +1373,7 @@ RegEnumValueW (HKEY hKey, LONG STDCALL RegFlushKey(HKEY hKey) { - HKEY KeyHandle; + HANDLE KeyHandle; LONG ErrorCode; NTSTATUS Status; @@ -1618,7 +1618,7 @@ RegOpenKeyA (HKEY hKey, { OBJECT_ATTRIBUTES ObjectAttributes; UNICODE_STRING SubKeyString; - HKEY KeyHandle; + HANDLE KeyHandle; LONG ErrorCode; NTSTATUS Status; @@ -1638,7 +1638,7 @@ RegOpenKeyA (HKEY hKey, OBJ_CASE_INSENSITIVE, KeyHandle, NULL); - Status = NtOpenKey (phkResult, + Status = NtOpenKey ((PHANDLE)phkResult, MAXIMUM_ALLOWED, &ObjectAttributes); RtlFreeUnicodeString (&SubKeyString); @@ -1668,7 +1668,7 @@ RegOpenKeyW (HKEY hKey, { OBJECT_ATTRIBUTES ObjectAttributes; UNICODE_STRING SubKeyString; - HKEY KeyHandle; + HANDLE KeyHandle; LONG ErrorCode; NTSTATUS Status; @@ -1688,7 +1688,7 @@ RegOpenKeyW (HKEY hKey, OBJ_CASE_INSENSITIVE, KeyHandle, NULL); - Status = NtOpenKey (phkResult, + Status = NtOpenKey ((PHANDLE)phkResult, MAXIMUM_ALLOWED, &ObjectAttributes); if (!NT_SUCCESS(Status)) @@ -1716,7 +1716,7 @@ RegOpenKeyExA (HKEY hKey, { OBJECT_ATTRIBUTES ObjectAttributes; UNICODE_STRING SubKeyString; - HKEY KeyHandle; + HANDLE KeyHandle; LONG ErrorCode; NTSTATUS Status; @@ -1736,7 +1736,7 @@ RegOpenKeyExA (HKEY hKey, OBJ_CASE_INSENSITIVE, KeyHandle, NULL); - Status = NtOpenKey (phkResult, + Status = NtOpenKey ((PHANDLE)phkResult, samDesired, &ObjectAttributes); RtlFreeUnicodeString (&SubKeyString); @@ -1765,7 +1765,7 @@ RegOpenKeyExW (HKEY hKey, { OBJECT_ATTRIBUTES ObjectAttributes; UNICODE_STRING SubKeyString; - HKEY KeyHandle; + HANDLE KeyHandle; LONG ErrorCode; NTSTATUS Status; @@ -1793,7 +1793,7 @@ RegOpenKeyExW (HKEY hKey, OBJ_CASE_INSENSITIVE, KeyHandle, NULL); - Status = NtOpenKey (phkResult, + Status = NtOpenKey ((PHANDLE)phkResult, samDesired, &ObjectAttributes); if (!NT_SUCCESS(Status)) @@ -1891,7 +1891,7 @@ RegQueryInfoKeyW (HKEY hKey, PKEY_FULL_INFORMATION FullInfo; ULONG FullInfoSize; ULONG ClassLength; - HKEY KeyHandle; + HANDLE KeyHandle; NTSTATUS Status; LONG ErrorCode = ERROR_SUCCESS; ULONG Length; @@ -2091,12 +2091,12 @@ RegQueryMultipleValuesW (HKEY hKey, NULL, NULL, &val_list[i].ve_valuelen); - if(ErrorCode != ERROR_SUCCESS) + if (ErrorCode != ERROR_SUCCESS) { return ErrorCode; } - if(lpValueBuf != NULL && *ldwTotsize + val_list[i].ve_valuelen <= maxBytes) + if (lpValueBuf != NULL && *ldwTotsize + val_list[i].ve_valuelen <= maxBytes) { ErrorCode = RegQueryValueExW (hKey, val_list[i].ve_valuename, @@ -2140,7 +2140,7 @@ RegQueryValueExW (HKEY hKey, LONG ErrorCode = ERROR_SUCCESS; ULONG BufferSize; ULONG ResultSize; - HKEY KeyHandle; + HANDLE KeyHandle; ULONG MaxCopy = lpcbData ? *lpcbData : 0; DPRINT("hKey 0x%X lpValueName %S lpData 0x%X lpcbData %d\n", @@ -2449,7 +2449,7 @@ RegQueryValueW (HKEY hKey, { OBJECT_ATTRIBUTES ObjectAttributes; UNICODE_STRING SubKeyString; - HKEY KeyHandle; + HANDLE KeyHandle; HANDLE RealKey; LONG ErrorCode; BOOL CloseRealKey; @@ -2811,7 +2811,7 @@ RegSaveKeyW (HKEY hKey, UNICODE_STRING FileName; IO_STATUS_BLOCK IoStatusBlock; HANDLE FileHandle; - HKEY KeyHandle; + HANDLE KeyHandle; NTSTATUS Status; LONG ErrorCode; @@ -2886,7 +2886,7 @@ RegSetKeySecurity (HKEY hKey, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor) { - HKEY KeyHandle; + HANDLE KeyHandle; LONG ErrorCode; NTSTATUS Status; @@ -3019,7 +3019,7 @@ RegSetValueExW (HKEY hKey, { UNICODE_STRING ValueName; PUNICODE_STRING pValueName; - HKEY KeyHandle; + HANDLE KeyHandle; NTSTATUS Status; LONG ErrorCode; @@ -3134,7 +3134,7 @@ RegSetValueW (HKEY hKey, { OBJECT_ATTRIBUTES ObjectAttributes; UNICODE_STRING SubKeyString; - HKEY KeyHandle; + HANDLE KeyHandle; HANDLE RealKey; LONG ErrorCode; BOOL CloseRealKey; diff --git a/reactos/lib/advapi32/sec/lsa.c b/reactos/lib/advapi32/sec/lsa.c index 41c31f52e64..fb5a6722aad 100644 --- a/reactos/lib/advapi32/sec/lsa.c +++ b/reactos/lib/advapi32/sec/lsa.c @@ -1,4 +1,4 @@ -/* $Id: lsa.c,v 1.10 2004/03/08 18:09:05 sedwards Exp $ +/* $Id: lsa.c,v 1.11 2004/06/17 09:07:12 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -12,148 +12,19 @@ * */ +#define NTOS_MODE_USER +#include #include -#include #include -#include - -/****************************************************************************** - * LsaNtStatusToWinError [ADVAPI32.@] - * - * PARAMS - * Status [I] - * - * @implemented - */ -ULONG WINAPI -LsaNtStatusToWinError(NTSTATUS Status) -{ - return RtlNtStatusToDosError(Status); -} +#define NDEBUG +#include -/****************************************************************************** - * LsaOpenPolicy [ADVAPI32.@] - * - * PARAMS - * x1 [] - * x2 [] - * x3 [] - * x4 [] - * - * @unimplemented - */ -NTSTATUS STDCALL -LsaOpenPolicy (PLSA_UNICODE_STRING lsaucs, - PLSA_OBJECT_ATTRIBUTES lsaoa, - ACCESS_MASK access, - PLSA_HANDLE lsah) -{ - DPRINT1("LsaOpenPolicy - stub\n"); - return STATUS_SUCCESS; -} #ifndef SID_REVISION /* FIXME - Winnt.h */ -#define SID_REVISION (1) /* Current revision */ +#define SID_REVISION (1) /* Current revision */ #endif -/* - * @unimplemented - */ -NTSTATUS -STDCALL -LsaQueryInformationPolicy(LSA_HANDLE lsah,POLICY_INFORMATION_CLASS pic,PVOID* Buffer) -{ - DPRINT1("(%p,0x%08x,%p):LsaQueryInformationPolicy stub\n", - lsah, pic, Buffer); - - if(!Buffer) return FALSE; - switch (pic) - { - case PolicyAuditEventsInformation: /* 2 */ - { - PPOLICY_AUDIT_EVENTS_INFO p = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(POLICY_AUDIT_EVENTS_INFO)); - p->AuditingMode = FALSE; /* no auditing */ - *Buffer = p; - } - break; - case PolicyPrimaryDomainInformation: /* 3 */ - case PolicyAccountDomainInformation: /* 5 */ - { - struct di - { POLICY_PRIMARY_DOMAIN_INFO ppdi; - SID sid; - }; - SID_IDENTIFIER_AUTHORITY localSidAuthority = {SECURITY_NT_AUTHORITY}; - - struct di * xdi = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(xdi)); - HKEY key; - BOOL useDefault = TRUE; - LONG ret; - - if ((ret = RegOpenKeyExA(HKEY_LOCAL_MACHINE, - "System\\CurrentControlSet\\Services\\VxD\\VNETSUP", 0, - KEY_READ, &key)) == ERROR_SUCCESS) - { - DWORD size = 0; - WCHAR wg[] = { 'W','o','r','k','g','r','o','u','p',0 }; - - ret = RegQueryValueExW(key, wg, NULL, NULL, NULL, &size); - if (ret == ERROR_MORE_DATA || ret == ERROR_SUCCESS) - { - xdi->ppdi.Name.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), - HEAP_ZERO_MEMORY, size); - if ((ret = RegQueryValueExW(key, wg, NULL, NULL, - (LPBYTE)xdi->ppdi.Name.Buffer, &size)) == ERROR_SUCCESS) - { - xdi->ppdi.Name.Length = (USHORT)size; - useDefault = FALSE; - } - else - { - RtlFreeHeap(RtlGetProcessHeap(), 0, xdi->ppdi.Name.Buffer); - xdi->ppdi.Name.Buffer = NULL; - } - } - RegCloseKey(key); - } - if (useDefault) - RtlCreateUnicodeStringFromAsciiz(&(xdi->ppdi.Name), "DOMAIN"); - DPRINT1("setting domain to \n"); - - xdi->ppdi.Sid = &(xdi->sid); - xdi->sid.Revision = SID_REVISION; - xdi->sid.SubAuthorityCount = 1; - xdi->sid.IdentifierAuthority = localSidAuthority; - xdi->sid.SubAuthority[0] = SECURITY_LOCAL_SYSTEM_RID; - *Buffer = xdi; - } - break; - case PolicyAuditLogInformation: - case PolicyPdAccountInformation: - case PolicyLsaServerRoleInformation: - case PolicyReplicaSourceInformation: - case PolicyDefaultQuotaInformation: - case PolicyModificationInformation: - case PolicyAuditFullSetInformation: - case PolicyAuditFullQueryInformation: - case PolicyDnsDomainInformation: - { - DPRINT1("category not implemented\n"); - return FALSE; - } - } - return TRUE; -} - -/* - * @implemented - */ -NTSTATUS STDCALL -LsaFreeMemory (PVOID pv) -{ - return RtlFreeHeap(RtlGetProcessHeap(), 0, pv); -} /* * @unimplemented @@ -161,8 +32,8 @@ LsaFreeMemory (PVOID pv) NTSTATUS STDCALL LsaClose(LSA_HANDLE ObjectHandle) { - DPRINT1("(%p):LsaClose stub\n",ObjectHandle); - return 0xc0000000; + DPRINT1("(%p):LsaClose stub\n",ObjectHandle); + return 0xc0000000; } /* @@ -171,13 +42,12 @@ LsaClose(LSA_HANDLE ObjectHandle) NTSTATUS STDCALL LsaAddAccountRights( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PSID AccountSid, PLSA_UNICODE_STRING UserRights, - ULONG CountOfRights - ) + ULONG CountOfRights) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -186,14 +56,13 @@ LsaAddAccountRights( NTSTATUS STDCALL LsaCreateTrustedDomainEx( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation, PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation, ACCESS_MASK DesiredAccess, - PLSA_HANDLE TrustedDomainHandle - ) + PLSA_HANDLE TrustedDomainHandle) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -202,11 +71,10 @@ LsaCreateTrustedDomainEx( NTSTATUS STDCALL LsaDeleteTrustedDomain( - LSA_HANDLE lsah, - PSID TrustedDomainSid - ) + LSA_HANDLE PolicyHandle, + PSID TrustedDomainSid) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -215,13 +83,12 @@ LsaDeleteTrustedDomain( NTSTATUS STDCALL LsaEnumerateAccountRights( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PSID AccountSid, PLSA_UNICODE_STRING *UserRights, - PULONG CountOfRights - ) + PULONG CountOfRights) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -230,13 +97,12 @@ LsaEnumerateAccountRights( NTSTATUS STDCALL LsaEnumerateAccountsWithUserRight( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, OPTIONAL PLSA_UNICODE_STRING UserRights, PVOID *EnumerationBuffer, - PULONG CountReturned - ) + PULONG CountReturned) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -245,14 +111,13 @@ LsaEnumerateAccountsWithUserRight( NTSTATUS STDCALL LsaEnumerateTrustedDomains( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PLSA_ENUMERATION_HANDLE EnumerationContext, PVOID *Buffer, ULONG PreferedMaximumLength, - PULONG CountReturned - ) + PULONG CountReturned) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -261,14 +126,22 @@ LsaEnumerateTrustedDomains( NTSTATUS STDCALL LsaEnumerateTrustedDomainsEx( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PLSA_ENUMERATION_HANDLE EnumerationContext, PVOID *Buffer, ULONG PreferedMaximumLength, - PULONG CountReturned - ) + PULONG CountReturned) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +/* + * @implemented + */ +NTSTATUS STDCALL +LsaFreeMemory(PVOID Buffer) +{ + return RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer); } /* @@ -277,14 +150,13 @@ LsaEnumerateTrustedDomainsEx( NTSTATUS STDCALL LsaLookupNames( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, ULONG Count, PLSA_UNICODE_STRING Names, PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains, - PLSA_TRANSLATED_SID *Sids - ) + PLSA_TRANSLATED_SID *Sids) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -293,15 +165,14 @@ LsaLookupNames( NTSTATUS STDCALL LsaLookupNames2( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, ULONG Flags, ULONG Count, PLSA_UNICODE_STRING Names, PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains, - PLSA_TRANSLATED_SID2 *Sids - ) + PLSA_TRANSLATED_SID2 *Sids) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -310,14 +181,48 @@ LsaLookupNames2( NTSTATUS STDCALL LsaLookupSids( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, ULONG Count, PSID *Sids, PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains, - PLSA_TRANSLATED_NAME *Names - ) + PLSA_TRANSLATED_NAME *Names) +{ + return STATUS_NOT_IMPLEMENTED; +} + +/****************************************************************************** + * LsaNtStatusToWinError + * + * PARAMS + * Status [I] + * + * @implemented + */ +ULONG STDCALL +LsaNtStatusToWinError(NTSTATUS Status) { - return(FALSE); + return RtlNtStatusToDosError(Status); +} + +/****************************************************************************** + * LsaOpenPolicy + * + * PARAMS + * x1 [] + * x2 [] + * x3 [] + * x4 [] + * + * @unimplemented + */ +NTSTATUS STDCALL +LsaOpenPolicy(PLSA_UNICODE_STRING lsaucs, + PLSA_OBJECT_ATTRIBUTES lsaoa, + ACCESS_MASK access, + PLSA_HANDLE PolicyHandle) +{ + DPRINT1("LsaOpenPolicy - stub\n"); + return STATUS_SUCCESS; } /* @@ -326,13 +231,12 @@ LsaLookupSids( NTSTATUS STDCALL LsaOpenTrustedDomainByName( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PLSA_UNICODE_STRING TrustedDomainName, ACCESS_MASK DesiredAccess, - PLSA_HANDLE TrustedDomainHandle - ) + PLSA_HANDLE TrustedDomainHandle) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -341,12 +245,11 @@ LsaOpenTrustedDomainByName( NTSTATUS STDCALL LsaQueryDomainInformationPolicy( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, POLICY_DOMAIN_INFORMATION_CLASS pic, - PVOID *Buffer - ) + PVOID *Buffer) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -355,12 +258,104 @@ LsaQueryDomainInformationPolicy( NTSTATUS STDCALL LsaQueryForestTrustInformation( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PLSA_UNICODE_STRING TrustedDomainName, - PLSA_FOREST_TRUST_INFORMATION * ForestTrustInfo - ) + PLSA_FOREST_TRUST_INFORMATION * ForestTrustInfo) +{ + return STATUS_NOT_IMPLEMENTED; +} + +/* + * @unimplemented + */ +NTSTATUS STDCALL +LsaQueryInformationPolicy(LSA_HANDLE PolicyHandle, + POLICY_INFORMATION_CLASS pic, + PVOID *Buffer) { - return(FALSE); + DPRINT1("(%p,0x%08x,%p):LsaQueryInformationPolicy stub\n", + PolicyHandle, pic, Buffer); + + if (!Buffer) + return FALSE; + + switch (pic) + { + case PolicyAuditEventsInformation: /* 2 */ + { + PPOLICY_AUDIT_EVENTS_INFO p = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(POLICY_AUDIT_EVENTS_INFO)); + p->AuditingMode = FALSE; /* no auditing */ + *Buffer = p; + } + break; + case PolicyPrimaryDomainInformation: /* 3 */ + case PolicyAccountDomainInformation: /* 5 */ + { + struct di + { POLICY_PRIMARY_DOMAIN_INFO ppdi; + SID sid; + }; + SID_IDENTIFIER_AUTHORITY localSidAuthority = {SECURITY_NT_AUTHORITY}; + + struct di * xdi = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(xdi)); + HKEY key; + BOOL useDefault = TRUE; + LONG ret; + + if ((ret = RegOpenKeyExA(HKEY_LOCAL_MACHINE, + "System\\CurrentControlSet\\Services\\VxD\\VNETSUP", 0, + KEY_READ, &key)) == ERROR_SUCCESS) + { + DWORD size = 0; + WCHAR wg[] = { 'W','o','r','k','g','r','o','u','p',0 }; + + ret = RegQueryValueExW(key, wg, NULL, NULL, NULL, &size); + if (ret == ERROR_MORE_DATA || ret == ERROR_SUCCESS) + { + xdi->ppdi.Name.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), + HEAP_ZERO_MEMORY, size); + if ((ret = RegQueryValueExW(key, wg, NULL, NULL, + (LPBYTE)xdi->ppdi.Name.Buffer, &size)) == ERROR_SUCCESS) + { + xdi->ppdi.Name.Length = (USHORT)size; + useDefault = FALSE; + } + else + { + RtlFreeHeap(RtlGetProcessHeap(), 0, xdi->ppdi.Name.Buffer); + xdi->ppdi.Name.Buffer = NULL; + } + } + RegCloseKey(key); + } + if (useDefault) + RtlCreateUnicodeStringFromAsciiz(&(xdi->ppdi.Name), "DOMAIN"); + DPRINT1("setting domain to \n"); + + xdi->ppdi.Sid = &(xdi->sid); + xdi->sid.Revision = SID_REVISION; + xdi->sid.SubAuthorityCount = 1; + xdi->sid.IdentifierAuthority = localSidAuthority; + xdi->sid.SubAuthority[0] = SECURITY_LOCAL_SYSTEM_RID; + *Buffer = xdi; + } + break; + case PolicyAuditLogInformation: + case PolicyPdAccountInformation: + case PolicyLsaServerRoleInformation: + case PolicyReplicaSourceInformation: + case PolicyDefaultQuotaInformation: + case PolicyModificationInformation: + case PolicyAuditFullSetInformation: + case PolicyAuditFullQueryInformation: + case PolicyDnsDomainInformation: + case PolicyEfsInformation: + { + DPRINT1("category not implemented\n"); + return FALSE; + } + } + return TRUE; } /* @@ -369,13 +364,12 @@ LsaQueryForestTrustInformation( NTSTATUS STDCALL LsaQueryTrustedDomainInfoByName( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PLSA_UNICODE_STRING TrustedDomainName, TRUSTED_INFORMATION_CLASS pic, - PVOID *Buffer - ) + PVOID *Buffer) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -384,13 +378,12 @@ LsaQueryTrustedDomainInfoByName( NTSTATUS STDCALL LsaQueryTrustedDomainInfo( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PSID TrustedDomainSid, TRUSTED_INFORMATION_CLASS pic, - PVOID *Buffer - ) + PVOID *Buffer) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -399,14 +392,13 @@ LsaQueryTrustedDomainInfo( NTSTATUS STDCALL LsaRemoveAccountRights( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PSID AccountSid, - BOOL AllRights, + BOOLEAN AllRights, PLSA_UNICODE_STRING UserRights, - ULONG CountOfRights - ) + ULONG CountOfRights) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -415,12 +407,11 @@ LsaRemoveAccountRights( NTSTATUS STDCALL LsaRetrievePrivateData( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PLSA_UNICODE_STRING KeyName, - PLSA_UNICODE_STRING * PrivateData - ) + PLSA_UNICODE_STRING *PrivateData) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -429,12 +420,11 @@ LsaRetrievePrivateData( NTSTATUS STDCALL LsaSetDomainInformationPolicy( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, POLICY_DOMAIN_INFORMATION_CLASS pic, - PVOID Buffer - ) + PVOID Buffer) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -443,12 +433,11 @@ LsaSetDomainInformationPolicy( NTSTATUS STDCALL LsaSetInformationPolicy( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, POLICY_INFORMATION_CLASS pic, - PVOID Buffer - ) + PVOID Buffer) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -457,14 +446,13 @@ LsaSetInformationPolicy( NTSTATUS STDCALL LsaSetForestTrustInformation( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PLSA_UNICODE_STRING TrustedDomainName, PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo, BOOL CheckOnly, - PLSA_FOREST_TRUST_COLLISION_INFORMATION * CollisionInfo - ) + PLSA_FOREST_TRUST_COLLISION_INFORMATION *CollisionInfo) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -473,13 +461,12 @@ LsaSetForestTrustInformation( NTSTATUS STDCALL LsaSetTrustedDomainInfoByName( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PLSA_UNICODE_STRING TrustedDomainName, TRUSTED_INFORMATION_CLASS pic, - PVOID Buffer - ) + PVOID Buffer) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -488,13 +475,12 @@ LsaSetTrustedDomainInfoByName( NTSTATUS STDCALL LsaSetTrustedDomainInformation( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PSID TrustedDomainSid, TRUSTED_INFORMATION_CLASS pic, - PVOID Buffer - ) + PVOID Buffer) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } /* @@ -503,10 +489,9 @@ LsaSetTrustedDomainInformation( NTSTATUS STDCALL LsaStorePrivateData( - LSA_HANDLE lsah, + LSA_HANDLE PolicyHandle, PLSA_UNICODE_STRING KeyName, - PLSA_UNICODE_STRING PrivateData - ) + PLSA_UNICODE_STRING PrivateData) { - return(FALSE); + return STATUS_NOT_IMPLEMENTED; } diff --git a/reactos/lib/advapi32/token/privilege.c b/reactos/lib/advapi32/token/privilege.c index 0a904961a1d..3f256ca1a97 100644 --- a/reactos/lib/advapi32/token/privilege.c +++ b/reactos/lib/advapi32/token/privilege.c @@ -1,4 +1,4 @@ -/* $Id: privilege.c,v 1.7 2004/03/25 11:30:07 ekohl Exp $ +/* $Id: privilege.c,v 1.8 2004/06/17 09:07:12 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -9,8 +9,9 @@ * 20010317 ea stubs */ +#define NTOS_MODE_USER +#include #include -#include /********************************************************************** diff --git a/reactos/w32api/include/ntsecapi.h b/reactos/w32api/include/ntsecapi.h index 559087292c9..7a412bffd97 100644 --- a/reactos/w32api/include/ntsecapi.h +++ b/reactos/w32api/include/ntsecapi.h @@ -247,6 +247,17 @@ typedef enum _TRUSTED_INFORMATION_CLASS { TrustedDomainAuthInformation, TrustedDomainFullInformation } TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS; +typedef enum _LSA_FOREST_TRUST_RECORD_TYPE { + ForestTrustTopLevelName, + ForestTrustTopLevelNameEx, + ForestTrustDomainInfo, + ForestTrustRecordTypeLast = ForestTrustDomainInfo +} LSA_FOREST_TRUST_RECORD_TYPE; +typedef enum _LSA_FOREST_TRUST_COLLISION_RECORD_TYPE { + CollisionTdo, + CollisionXref, + CollisionOther +} LSA_FOREST_TRUST_COLLISION_RECORD_TYPE; typedef struct _DOMAIN_PASSWORD_INFORMATION { USHORT MinPasswordLength; USHORT PasswordHistoryLength; @@ -270,6 +281,39 @@ typedef struct _LSA_OBJECT_ATTRIBUTES { } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; #endif typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES; +typedef struct _LSA_FOREST_TRUST_DOMAIN_INFO { + PSID Sid; + LSA_UNICODE_STRING DnsName; + LSA_UNICODE_STRING NetbiosName; +} LSA_FOREST_TRUST_DOMAIN_INFO, *PLSA_FOREST_TRUST_DOMAIN_INFO; +typedef struct _LSA_FOREST_TRUST_BINARY_DATA { + ULONG Length; + PUCHAR Buffer; +} LSA_FOREST_TRUST_BINARY_DATA, *PLSA_FOREST_TRUST_BINARY_DATA; +typedef struct _LSA_FOREST_TRUST_RECORD { + ULONG Flags; + LSA_FOREST_TRUST_RECORD_TYPE ForestTrustType; + LARGE_INTEGER Time; + union { + LSA_UNICODE_STRING TopLevelName; + LSA_FOREST_TRUST_DOMAIN_INFO DomainInfo; + LSA_FOREST_TRUST_BINARY_DATA Data; + } ForestTrustData; +} LSA_FOREST_TRUST_RECORD, *PLSA_FOREST_TRUST_RECORD; +typedef struct _LSA_FOREST_TRUST_INFORMATION { + ULONG RecordCount; + PLSA_FOREST_TRUST_RECORD *Entries; +} LSA_FOREST_TRUST_INFORMATION, *PLSA_FOREST_TRUST_INFORMATION; +typedef struct _LSA_FOREST_TRUST_COLLISION_RECORD { + ULONG Index; + LSA_FOREST_TRUST_COLLISION_RECORD_TYPE Type; + ULONG Flags; + LSA_UNICODE_STRING Name; +} LSA_FOREST_TRUST_COLLISION_RECORD, *PLSA_FOREST_TRUST_COLLISION_RECORD; +typedef struct _LSA_FOREST_TRUST_COLLISION_INFORMATION { + ULONG RecordCount; + PLSA_FOREST_TRUST_COLLISION_RECORD *Entries; +} LSA_FOREST_TRUST_COLLISION_INFORMATION, *PLSA_FOREST_TRUST_COLLISION_INFORMATION; typedef struct _LSA_TRUST_INFORMATION { LSA_UNICODE_STRING Name; PSID Sid; @@ -283,6 +327,12 @@ typedef struct _LSA_TRANSLATED_SID { ULONG RelativeId; LONG DomainIndex; } LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID; +typedef struct _LSA_TRANSLATED_SID2 { + SID_NAME_USE Use; + PSID Sid; + LONG DomainIndex; + ULONG Flags; +} LSA_TRANSLATED_SID2, *PLSA_TRANSLATED_SID2; typedef struct _LSA_TRANSLATED_NAME { SID_NAME_USE Use; LSA_UNICODE_STRING Name; @@ -562,7 +612,7 @@ NTSTATUS NTAPI LsaEnumerateAccountsWithUserRight(LSA_HANDLE,PLSA_UNICODE_STRING, NTSTATUS NTAPI LsaEnumerateTrustedDomains(LSA_HANDLE,PLSA_ENUMERATION_HANDLE, PVOID*,ULONG,PULONG); NTSTATUS NTAPI LsaEnumerateTrustedDomainsEx(LSA_HANDLE,PLSA_ENUMERATION_HANDLE, - TRUSTED_INFORMATION_CLASS,PVOID*,ULONG,PULONG); + PVOID*,ULONG,PULONG); NTSTATUS NTAPI LsaFreeMemory(PVOID); NTSTATUS NTAPI LsaFreeReturnBuffer(PVOID); NTSTATUS NTAPI LsaLogonUser(HANDLE,PLSA_STRING,SECURITY_LOGON_TYPE,ULONG,PVOID, -- 2.17.1