2002-03-10 00:29:33 +01:00
|
|
|
/*
|
|
|
|
* Copyright (C) 1999 Juergen Schmied
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
*/
|
|
|
|
|
1999-07-04 13:01:21 +02:00
|
|
|
#ifndef __WINE_NTSECAPI_H
|
|
|
|
#define __WINE_NTSECAPI_H
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif /* defined(__cplusplus) */
|
|
|
|
|
2002-09-11 02:48:26 +02:00
|
|
|
/* Policy access rights */
|
|
|
|
#define POLICY_VIEW_LOCAL_INFORMATION 0x00000001L
|
|
|
|
#define POLICY_VIEW_AUDIT_INFORMATION 0x00000002L
|
|
|
|
#define POLICY_GET_PRIVATE_INFORMATION 0x00000004L
|
|
|
|
#define POLICY_TRUST_ADMIN 0x00000008L
|
|
|
|
#define POLICY_CREATE_ACCOUNT 0x00000010L
|
|
|
|
#define POLICY_CREATE_SECRET 0x00000020L
|
|
|
|
#define POLICY_CREATE_PRIVILEGE 0x00000040L
|
|
|
|
#define POLICY_SET_DEFAULT_QUOTA_LIMITS 0x00000080L
|
|
|
|
#define POLICY_SET_AUDIT_REQUIREMENTS 0x00000100L
|
|
|
|
#define POLICY_AUDIT_LOG_ADMIN 0x00000200L
|
|
|
|
#define POLICY_SERVER_ADMIN 0x00000400L
|
|
|
|
#define POLICY_LOOKUP_NAMES 0x00000800L
|
|
|
|
#define POLICY_NOTIFICATION 0x00001000L
|
|
|
|
|
|
|
|
#define POLICY_ALL_ACCESS ( \
|
|
|
|
STANDARD_RIGHTS_REQUIRED | \
|
|
|
|
POLICY_VIEW_LOCAL_INFORMATION | \
|
|
|
|
POLICY_VIEW_AUDIT_INFORMATION | \
|
|
|
|
POLICY_GET_PRIVATE_INFORMATION | \
|
|
|
|
POLICY_TRUST_ADMIN | \
|
|
|
|
POLICY_CREATE_ACCOUNT | \
|
|
|
|
POLICY_CREATE_SECRET | \
|
|
|
|
POLICY_CREATE_PRIVILEGE | \
|
|
|
|
POLICY_SET_DEFAULT_QUOTA_LIMITS | \
|
|
|
|
POLICY_SET_AUDIT_REQUIREMENTS | \
|
|
|
|
POLICY_AUDIT_LOG_ADMIN | \
|
|
|
|
POLICY_SERVER_ADMIN | \
|
|
|
|
POLICY_LOOKUP_NAMES)
|
|
|
|
|
|
|
|
|
|
|
|
#define POLICY_READ ( \
|
|
|
|
STANDARD_RIGHTS_READ | \
|
|
|
|
POLICY_VIEW_AUDIT_INFORMATION | \
|
|
|
|
POLICY_GET_PRIVATE_INFORMATION)
|
|
|
|
|
|
|
|
#define POLICY_WRITE ( \
|
|
|
|
STANDARD_RIGHTS_WRITE | \
|
|
|
|
POLICY_TRUST_ADMIN | \
|
|
|
|
POLICY_CREATE_ACCOUNT | \
|
|
|
|
POLICY_CREATE_SECRET | \
|
|
|
|
POLICY_CREATE_PRIVILEGE | \
|
|
|
|
POLICY_SET_DEFAULT_QUOTA_LIMITS | \
|
|
|
|
POLICY_SET_AUDIT_REQUIREMENTS | \
|
|
|
|
POLICY_AUDIT_LOG_ADMIN | \
|
|
|
|
POLICY_SERVER_ADMIN)
|
|
|
|
|
|
|
|
#define POLICY_EXECUTE ( \
|
|
|
|
STANDARD_RIGHTS_EXECUTE | \
|
|
|
|
POLICY_VIEW_LOCAL_INFORMATION | \
|
|
|
|
POLICY_LOOKUP_NAMES)
|
|
|
|
|
2005-01-21 11:15:50 +01:00
|
|
|
#define POLICY_AUDIT_EVENT_UNCHANGED 0x00000000L
|
|
|
|
#define POLICY_AUDIT_EVENT_SUCCESS 0x00000001L
|
|
|
|
#define POLICY_AUDIT_EVENT_FAILURE 0x00000002L
|
|
|
|
#define POLICY_AUDIT_EVENT_NONE 0x00000004L
|
|
|
|
|
|
|
|
#define POLICY_AUDIT_EVENT_MASK (POLICY_AUDIT_EVENT_SUCCESS | \
|
|
|
|
POLICY_AUDIT_EVENT_FAILURE | \
|
|
|
|
POLICY_AUDIT_EVENT_NONE)
|
|
|
|
|
|
|
|
/* logon rights names */
|
|
|
|
#define SE_BATCH_LOGON_NAME \
|
|
|
|
TEXT("SeBatchLogonRight")
|
|
|
|
#define SE_INTERACTIVE_LOGON_NAME \
|
|
|
|
TEXT("SeInteractiveLogonRight")
|
|
|
|
#define SE_NETWORK_LOGON_NAME \
|
|
|
|
TEXT("SeNetworkLogonRight")
|
|
|
|
#define SE_REMOTE_INTERACTIVE_LOGON_NAME \
|
|
|
|
TEXT("SeRemoteInteractiveLogonRight")
|
|
|
|
#define SE_SERVICE_LOGON_NAME \
|
|
|
|
TEXT("SeServiceLogonRight")
|
|
|
|
#define SE_DENY_BATCH_LOGON_NAME \
|
|
|
|
TEXT("SeDenyBatchLogonRight")
|
|
|
|
#define SE_DENY_INTERACTIVE_LOGON_NAME \
|
|
|
|
TEXT("SeDenyInteractiveLogonRight")
|
|
|
|
#define SE_DENY_NETWORK_LOGON_NAME \
|
|
|
|
TEXT("SeDenyNetworkLogonRight")
|
|
|
|
#define SE_DENY_REMOTE_INTERACTIVE_LOGON_NAME \
|
|
|
|
TEXT("SeDenyRemoteInteractiveLogonRight")
|
|
|
|
#define SE_DENY_SERVICE_LOGON_NAME \
|
|
|
|
TEXT("SeDenyServiceLogonRight")
|
|
|
|
|
|
|
|
typedef enum _SECURITY_LOGON_TYPE
|
|
|
|
{
|
|
|
|
Interactive = 2,
|
|
|
|
Network,
|
|
|
|
Batch,
|
|
|
|
Service,
|
|
|
|
Proxy
|
|
|
|
} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
|
|
|
|
|
|
|
|
typedef enum _POLICY_AUDIT_EVENT_TYPE
|
|
|
|
{
|
|
|
|
AuditCategorySystem,
|
|
|
|
AuditCategoryLogon,
|
|
|
|
AuditCategoryObjectAccess,
|
|
|
|
AuditCategoryPrivilegeUse,
|
|
|
|
AuditCategoryDetailedTracking,
|
|
|
|
AuditCategoryPolicyChange,
|
|
|
|
AuditCategoryAccountManagement
|
|
|
|
} POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE;
|
|
|
|
|
1999-07-04 13:01:21 +02:00
|
|
|
typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
|
|
|
|
typedef STRING LSA_STRING, *PLSA_STRING;
|
|
|
|
typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
|
|
|
|
|
|
|
|
typedef PVOID LSA_HANDLE, *PLSA_HANDLE;
|
Stub implementations for GetKernelObjectSecurity,
GetPrivateObjectSecurity, GetServiceKeyName{A,W},
ImpersonateNamedPipeClient, InitiateSystemShutdown{A,W},
IsTokenRestricted, LogonUser{A,W}, LookupAccountNameW,
LookupPrivilegeDisplayName{A,W}, MapGenericMask,
ObjectCloseAuditAlarm{A,W}, ObjectOpenAuditAlarm{A,W},
ObjectPrivilegeAuditAlarm{A,W}, PrivilegedServiceAuditAlarm{A,W},
QueryServiceLockStatus{A,W}, SetAclInformation,
SetPrivateObjectSecurity, SetSecurityDescriptorControl,
SetServiceBits, LsaSetInformationPolicy, LsaLookupNames,
LsaEnumerateTrustedDomains.
2005-01-03 18:12:51 +01:00
|
|
|
typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE;
|
1999-07-04 13:01:21 +02:00
|
|
|
|
2002-06-01 01:06:46 +02:00
|
|
|
typedef enum
|
1999-12-12 00:19:54 +01:00
|
|
|
{
|
|
|
|
PolicyAuditLogInformation = 1,
|
|
|
|
PolicyAuditEventsInformation,
|
|
|
|
PolicyPrimaryDomainInformation,
|
|
|
|
PolicyPdAccountInformation,
|
|
|
|
PolicyAccountDomainInformation,
|
|
|
|
PolicyLsaServerRoleInformation,
|
|
|
|
PolicyReplicaSourceInformation,
|
|
|
|
PolicyDefaultQuotaInformation,
|
|
|
|
PolicyModificationInformation,
|
|
|
|
PolicyAuditFullSetInformation,
|
|
|
|
PolicyAuditFullQueryInformation,
|
|
|
|
PolicyDnsDomainInformation
|
|
|
|
} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
|
|
|
|
|
- implementation of RtlReg* (read access), RtlEvent*, RtlSemaphore*,
NtAllocateLocallyUniqueId
- implementation or stubs for NtAccessCheck, NtSetSecurityObject,
RtlClearBits, RtlEqualPrefixSid, RtlFindClearBits,
RtlFormatCurrentUserKeyPath, RtlGetControlSecurityDescriptor,
RtlIdentifierAuthoritySid, RtlImpersonateSelf, RtlInitializeBitMap,
RtlInitializeGenericTable, RtlMakeSelfRelativeSD,
RtlPrefixUnicodeString, RtlSetBits, RtlUnicodeToMultiByteN,
RtlUpcaseUnicodeStringToOemString, RtlUpcaseUnicodeToOemN,
RtlValidSid, RtlxUnicodeStringToOemSize
- corrected most RtlString* functions, added documentation
- more fixes and partial implementations
2000-01-23 23:35:33 +01:00
|
|
|
typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS;
|
|
|
|
|
2002-09-11 02:48:26 +02:00
|
|
|
typedef struct _POLICY_AUDIT_EVENTS_INFO
|
- implementation of RtlReg* (read access), RtlEvent*, RtlSemaphore*,
NtAllocateLocallyUniqueId
- implementation or stubs for NtAccessCheck, NtSetSecurityObject,
RtlClearBits, RtlEqualPrefixSid, RtlFindClearBits,
RtlFormatCurrentUserKeyPath, RtlGetControlSecurityDescriptor,
RtlIdentifierAuthoritySid, RtlImpersonateSelf, RtlInitializeBitMap,
RtlInitializeGenericTable, RtlMakeSelfRelativeSD,
RtlPrefixUnicodeString, RtlSetBits, RtlUnicodeToMultiByteN,
RtlUpcaseUnicodeStringToOemString, RtlUpcaseUnicodeToOemN,
RtlValidSid, RtlxUnicodeStringToOemSize
- corrected most RtlString* functions, added documentation
- more fixes and partial implementations
2000-01-23 23:35:33 +01:00
|
|
|
{
|
|
|
|
BOOLEAN AuditingMode;
|
|
|
|
PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions;
|
|
|
|
ULONG MaximumAuditEventCount;
|
|
|
|
} POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO;
|
|
|
|
|
2002-09-11 02:48:26 +02:00
|
|
|
typedef struct _POLICY_PRIMARY_DOMAIN_INFO
|
- implementation of RtlReg* (read access), RtlEvent*, RtlSemaphore*,
NtAllocateLocallyUniqueId
- implementation or stubs for NtAccessCheck, NtSetSecurityObject,
RtlClearBits, RtlEqualPrefixSid, RtlFindClearBits,
RtlFormatCurrentUserKeyPath, RtlGetControlSecurityDescriptor,
RtlIdentifierAuthoritySid, RtlImpersonateSelf, RtlInitializeBitMap,
RtlInitializeGenericTable, RtlMakeSelfRelativeSD,
RtlPrefixUnicodeString, RtlSetBits, RtlUnicodeToMultiByteN,
RtlUpcaseUnicodeStringToOemString, RtlUpcaseUnicodeToOemN,
RtlValidSid, RtlxUnicodeStringToOemSize
- corrected most RtlString* functions, added documentation
- more fixes and partial implementations
2000-01-23 23:35:33 +01:00
|
|
|
{
|
|
|
|
LSA_UNICODE_STRING Name;
|
|
|
|
PSID Sid;
|
|
|
|
} POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO;
|
|
|
|
|
2002-09-11 02:48:26 +02:00
|
|
|
typedef struct _POLICY_ACCOUNT_DOMAIN_INFO
|
|
|
|
{
|
|
|
|
LSA_UNICODE_STRING DomainName;
|
|
|
|
PSID DomainSid;
|
|
|
|
} POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO;
|
|
|
|
|
2004-08-16 21:47:21 +02:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
SID_NAME_USE Use;
|
|
|
|
LSA_UNICODE_STRING Name;
|
|
|
|
LONG DomainIndex;
|
|
|
|
} LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
LSA_UNICODE_STRING Name;
|
|
|
|
PSID Sid;
|
|
|
|
} LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
ULONG Entries;
|
|
|
|
PLSA_TRUST_INFORMATION Domains;
|
|
|
|
} LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST;
|
- implementation of RtlReg* (read access), RtlEvent*, RtlSemaphore*,
NtAllocateLocallyUniqueId
- implementation or stubs for NtAccessCheck, NtSetSecurityObject,
RtlClearBits, RtlEqualPrefixSid, RtlFindClearBits,
RtlFormatCurrentUserKeyPath, RtlGetControlSecurityDescriptor,
RtlIdentifierAuthoritySid, RtlImpersonateSelf, RtlInitializeBitMap,
RtlInitializeGenericTable, RtlMakeSelfRelativeSD,
RtlPrefixUnicodeString, RtlSetBits, RtlUnicodeToMultiByteN,
RtlUpcaseUnicodeStringToOemString, RtlUpcaseUnicodeToOemN,
RtlValidSid, RtlxUnicodeStringToOemSize
- corrected most RtlString* functions, added documentation
- more fixes and partial implementations
2000-01-23 23:35:33 +01:00
|
|
|
|
Stub implementations for GetKernelObjectSecurity,
GetPrivateObjectSecurity, GetServiceKeyName{A,W},
ImpersonateNamedPipeClient, InitiateSystemShutdown{A,W},
IsTokenRestricted, LogonUser{A,W}, LookupAccountNameW,
LookupPrivilegeDisplayName{A,W}, MapGenericMask,
ObjectCloseAuditAlarm{A,W}, ObjectOpenAuditAlarm{A,W},
ObjectPrivilegeAuditAlarm{A,W}, PrivilegedServiceAuditAlarm{A,W},
QueryServiceLockStatus{A,W}, SetAclInformation,
SetPrivateObjectSecurity, SetSecurityDescriptorControl,
SetServiceBits, LsaSetInformationPolicy, LsaLookupNames,
LsaEnumerateTrustedDomains.
2005-01-03 18:12:51 +01:00
|
|
|
typedef struct _LSA_TRANSLATED_SID
|
|
|
|
{
|
|
|
|
SID_NAME_USE Use;
|
|
|
|
ULONG RelativeId;
|
|
|
|
LONG DomainIndex;
|
|
|
|
} LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID;
|
1999-12-12 00:19:54 +01:00
|
|
|
|
Stub implementations for GetKernelObjectSecurity,
GetPrivateObjectSecurity, GetServiceKeyName{A,W},
ImpersonateNamedPipeClient, InitiateSystemShutdown{A,W},
IsTokenRestricted, LogonUser{A,W}, LookupAccountNameW,
LookupPrivilegeDisplayName{A,W}, MapGenericMask,
ObjectCloseAuditAlarm{A,W}, ObjectOpenAuditAlarm{A,W},
ObjectPrivilegeAuditAlarm{A,W}, PrivilegedServiceAuditAlarm{A,W},
QueryServiceLockStatus{A,W}, SetAclInformation,
SetPrivateObjectSecurity, SetSecurityDescriptorControl,
SetServiceBits, LsaSetInformationPolicy, LsaLookupNames,
LsaEnumerateTrustedDomains.
2005-01-03 18:12:51 +01:00
|
|
|
NTSTATUS WINAPI LsaClose(LSA_HANDLE);
|
|
|
|
NTSTATUS WINAPI LsaEnumerateTrustedDomains(LSA_HANDLE,PLSA_ENUMERATION_HANDLE,PVOID*,ULONG,PULONG);
|
1999-12-12 00:19:54 +01:00
|
|
|
NTSTATUS WINAPI LsaFreeMemory(PVOID);
|
Stub implementations for GetKernelObjectSecurity,
GetPrivateObjectSecurity, GetServiceKeyName{A,W},
ImpersonateNamedPipeClient, InitiateSystemShutdown{A,W},
IsTokenRestricted, LogonUser{A,W}, LookupAccountNameW,
LookupPrivilegeDisplayName{A,W}, MapGenericMask,
ObjectCloseAuditAlarm{A,W}, ObjectOpenAuditAlarm{A,W},
ObjectPrivilegeAuditAlarm{A,W}, PrivilegedServiceAuditAlarm{A,W},
QueryServiceLockStatus{A,W}, SetAclInformation,
SetPrivateObjectSecurity, SetSecurityDescriptorControl,
SetServiceBits, LsaSetInformationPolicy, LsaLookupNames,
LsaEnumerateTrustedDomains.
2005-01-03 18:12:51 +01:00
|
|
|
NTSTATUS WINAPI LsaLookupNames(LSA_HANDLE,ULONG Count,PLSA_UNICODE_STRING,PLSA_REFERENCED_DOMAIN_LIST*,
|
|
|
|
PLSA_TRANSLATED_SID*);
|
2005-01-21 11:15:50 +01:00
|
|
|
NTSTATUS WINAPI LsaLookupSids(LSA_HANDLE,ULONG,PSID *,PLSA_REFERENCED_DOMAIN_LIST *,PLSA_TRANSLATED_NAME *);
|
Stub implementations for GetKernelObjectSecurity,
GetPrivateObjectSecurity, GetServiceKeyName{A,W},
ImpersonateNamedPipeClient, InitiateSystemShutdown{A,W},
IsTokenRestricted, LogonUser{A,W}, LookupAccountNameW,
LookupPrivilegeDisplayName{A,W}, MapGenericMask,
ObjectCloseAuditAlarm{A,W}, ObjectOpenAuditAlarm{A,W},
ObjectPrivilegeAuditAlarm{A,W}, PrivilegedServiceAuditAlarm{A,W},
QueryServiceLockStatus{A,W}, SetAclInformation,
SetPrivateObjectSecurity, SetSecurityDescriptorControl,
SetServiceBits, LsaSetInformationPolicy, LsaLookupNames,
LsaEnumerateTrustedDomains.
2005-01-03 18:12:51 +01:00
|
|
|
ULONG WINAPI LsaNtStatusToWinError(NTSTATUS);
|
|
|
|
NTSTATUS WINAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,ACCESS_MASK,PLSA_HANDLE);
|
|
|
|
NTSTATUS WINAPI LsaQueryInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*);
|
2005-06-13 12:04:20 +02:00
|
|
|
NTSTATUS WINAPI LsaRetrievePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,PLSA_UNICODE_STRING*);
|
Stub implementations for GetKernelObjectSecurity,
GetPrivateObjectSecurity, GetServiceKeyName{A,W},
ImpersonateNamedPipeClient, InitiateSystemShutdown{A,W},
IsTokenRestricted, LogonUser{A,W}, LookupAccountNameW,
LookupPrivilegeDisplayName{A,W}, MapGenericMask,
ObjectCloseAuditAlarm{A,W}, ObjectOpenAuditAlarm{A,W},
ObjectPrivilegeAuditAlarm{A,W}, PrivilegedServiceAuditAlarm{A,W},
QueryServiceLockStatus{A,W}, SetAclInformation,
SetPrivateObjectSecurity, SetSecurityDescriptorControl,
SetServiceBits, LsaSetInformationPolicy, LsaLookupNames,
LsaEnumerateTrustedDomains.
2005-01-03 18:12:51 +01:00
|
|
|
NTSTATUS WINAPI LsaSetInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID);
|
2005-06-13 12:04:20 +02:00
|
|
|
NTSTATUS WINAPI LsaStorePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,PLSA_UNICODE_STRING);
|
1999-12-12 00:19:54 +01:00
|
|
|
|
1999-07-04 13:01:21 +02:00
|
|
|
#ifdef __cplusplus
|
|
|
|
} /* extern "C" */
|
|
|
|
#endif /* defined(__cplusplus) */
|
|
|
|
|
|
|
|
#endif /* !defined(__WINE_NTSECAPI_H) */
|