diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec index f17e6878d8d..c6ff58efb5e 100644 --- a/dlls/advapi32/advapi32.spec +++ b/dlls/advapi32/advapi32.spec @@ -242,9 +242,9 @@ type win32 0238 stub UnlockServiceDatabase 0239 stdcall LsaOpenPolicy(long long long long) LsaOpenPolicy 0240 stub LsaLookupSids -0241 stub LsaFreeMemory -0242 stub LsaQueryInformationPolicy -0243 stub LsaClose +0241 stdcall LsaFreeMemory(ptr)LsaFreeMemory +0242 stdcall LsaQueryInformationPolicy(ptr long ptr)LsaQueryInformationPolicy +0243 stdcall LsaClose(ptr)LsaClose 0244 stub LsaSetInformationPolicy 0245 stub LsaLookupNames 0246 stub SystemFunction001 diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index 7f8779a96a6..1e61f1bbbdb 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -713,6 +713,37 @@ LsaOpenPolicy(PLSA_UNICODE_STRING SystemName, return 0xc0000000; /* generic error */ } +/****************************************************************************** + * LsaQueryInformationPolicy [ADVAPI32.242] + */ +NTSTATUS WINAPI +LsaQueryInformationPolicy( IN LSA_HANDLE PolicyHandle, + IN POLICY_INFORMATION_CLASS InformationClass, + OUT PVOID *Buffer) +{ + FIXME("(%p,0x%08x,%p):stub\n", + PolicyHandle, InformationClass, Buffer); + return 0xc0000000; /* generic error */ +} + +/****************************************************************************** + * LsaFreeMemory [ADVAPI32.241] + */ +NTSTATUS WINAPI +LsaFreeMemory(IN PVOID Buffer) +{ + FIXME("(%p):stub\n",Buffer); + return 0xc0000000; +} +/****************************************************************************** + * LsaClose [ADVAPI32.243] + */ +NTSTATUS WINAPI +LsaClose(IN LSA_HANDLE ObjectHandle) +{ + FIXME("(%p):stub\n",ObjectHandle); + return 0xc0000000; +} /****************************************************************************** * NotifyBootConfigStatus [ADVAPI32.97] * diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c index f296150af0f..6f278a5d51d 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c @@ -261,14 +261,29 @@ NTSTATUS WINAPI NtQueryInformationToken( switch (tokeninfoclass) { case TokenGroups: /* 2 */ *retlen = sizeof (TOKEN_GROUPS); -#if 0 + break; case TokenUser: /* 1 */ + *retlen = sizeof (TOKEN_USER); + break; case TokenPrivileges: + *retlen = sizeof (TOKEN_PRIVILEGES); + break; case TokenOwner: + *retlen = sizeof (TOKEN_OWNER); + break; case TokenPrimaryGroup: + *retlen = sizeof (TOKEN_PRIMARY_GROUP); + break; case TokenDefaultDacl: + *retlen = sizeof (TOKEN_DEFAULT_DACL); + break; case TokenSource: + *retlen = sizeof (TOKEN_SOURCE); + break; case TokenType: + *retlen = sizeof (TOKEN_TYPE); + break; +#if 0 case TokenImpersonationLevel: case TokenStatistics: #endif /* 0 */ diff --git a/include/ntsecapi.h b/include/ntsecapi.h index 662c1013341..44fa0b5c49c 100644 --- a/include/ntsecapi.h +++ b/include/ntsecapi.h @@ -16,6 +16,27 @@ typedef PVOID LSA_HANDLE, *PLSA_HANDLE; NTSTATUS WINAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,ACCESS_MASK,PLSA_HANDLE); +typedef enum +{ + PolicyAuditLogInformation = 1, + PolicyAuditEventsInformation, + PolicyPrimaryDomainInformation, + PolicyPdAccountInformation, + PolicyAccountDomainInformation, + PolicyLsaServerRoleInformation, + PolicyReplicaSourceInformation, + PolicyDefaultQuotaInformation, + PolicyModificationInformation, + PolicyAuditFullSetInformation, + PolicyAuditFullQueryInformation, + PolicyDnsDomainInformation +} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS; + +NTSTATUS WINAPI LsaQueryInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*); + +NTSTATUS WINAPI LsaFreeMemory(PVOID); +NTSTATUS WINAPI LsaClose(IN LSA_HANDLE ObjectHandle); + #ifdef __cplusplus } /* extern "C" */ #endif /* defined(__cplusplus) */ diff --git a/include/winnt.h b/include/winnt.h index 691bd3d3904..4fed1dc8dd6 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -1033,6 +1033,52 @@ typedef struct _SID_AND_ATTRIBUTES { DWORD Attributes; } SID_AND_ATTRIBUTES ; +/* security entities */ +#define SECURITY_NULL_RID (0x00000000L) +#define SECURITY_WORLD_RID (0x00000000L) +#define SECURITY_LOCAL_RID (0X00000000L) + +#define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0} + +/* S-1-1 */ +#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1} + +/* S-1-2 */ +#define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2} + +/* S-1-3 */ +#define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3} +#define SECURITY_CREATOR_OWNER_RID (0x00000000L) +#define SECURITY_CREATOR_GROUP_RID (0x00000001L) +#define SECURITY_CREATOR_OWNER_SERVER_RID (0x00000002L) +#define SECURITY_CREATOR_GROUP_SERVER_RID (0x00000003L) + +/* S-1-4 */ +#define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4} + +/* S-1-5 */ +#define SECURITY_NT_AUTHORITY {0,0,0,0,0,5} +#define SECURITY_DIALUP_RID (0x00000001L) +#define SECURITY_NETWORK_RID (0x00000002L) +#define SECURITY_BATCH_RID (0x00000003L) +#define SECURITY_INTERACTIVE_RID (0x00000004L) +#define SECURITY_LOGON_IDS_RID (0x00000005L) +#define SECURITY_SERVICE_RID (0x00000006L) +#define SECURITY_ANONYMOUS_LOGON_RID (0x00000007L) +#define SECURITY_PROXY_RID (0x00000008L) +#define SECURITY_ENTERPRISE_CONTROLLERS_RID (0x00000009L) +#define SECURITY_PRINCIPAL_SELF_RID (0x0000000AL) +#define SECURITY_AUTHENTICATED_USER_RID (0x0000000BL) +#define SECURITY_RESTRICTED_CODE_RID (0x0000000CL) +#define SECURITY_TERMINAL_SERVER_RID (0x0000000DL) +#define SECURITY_LOCAL_SYSTEM_RID (0x00000012L) +#define SECURITY_NT_NON_UNIQUE (0x00000015L) +#define SECURITY_BUILTIN_DOMAIN_RID (0x00000020L) + +#define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID + +#define SECURITY_LOGON_IDS_RID_COUNT (3L) + /* * TOKEN_USER */