Files
reactos/reactos/include/ntsecapi.h
T
Thomas Bluemel 569f26e923 changes in this patch by Jonathon Wilson:
1.add some definitions to ascii.h
2.add some definitions to base.h
3.add some definitions to defines.h
4.add some definitions to funcs.h
5.add some definitions to structs.h
6.add some definitions to unicode.h
7.add some definitions to winsock2.h
8.fix it so that the ACCESS_MODE definition in ntos\security.h is only visible in kernel mode
9.add lots of stubs to advapi32.dll (some stuff from appmgmt.h, winsafer.h, evntrace.h, winefs.h, sddl.h, wincred.h & mschapp.h still to be added)
10.add a bunch of stubs to iphlpapi.dll
11.modify kernel32.dll so that certain functions are forwarded to ntdll.dll instead of being stubs in kernel32.dll
12.modify lz32.dll so that everything points at kernel32.dll
13.fix msafd.h to account for changes to winsock2.h (winsock2.h now needs stdlib.h to get the size_t type)
14.add stubs for SendIMEMessageExW and SendIMEMessageExA to user32.dll
15.add some stubs to ws2_32.dll
16.rename WahCreateNotificationTable to WahCreateNotificationHandle in ws2help.dll (WahCreateNotificationHandle is what microsoft calls it)
17.fix ws2help.h to account for changes to winsock2.h (winsock2.h now needs stdlib.h to get the size_t type)
18.fix wshirda.h to account for changes to winsock2.h (winsock2.h now needs stdlib.h to get the size_t type)
19.fix wsock32\stubs.c to account for changes to winsock2.h (winsock2.h now needs stdlib.h to get the size_t type)
20.add some stubs/fix some others for wsock32.dll
21.add some stubs to secur32.dll (more to come when I get sspi.h, secext.h & ntsecpkg.h)
22.add stubs for GetConsoleKeyboardLayoutNameA & GetConsoleKeyboardLayoutNameW to kernel32
23.add stub for SetupChangeFontSize to syssetup.dll
24.add some header files from WINE (related to advapi, secur32 and others)
and 25.made lsass\ntsecapi.h redundant (the stuff that was in it is now in the WINE ntsecapi.h). Therefore, it should probobly be removed.

There are also a bunch of things in the defs/edfs that are there but commented out. This is because I have yet to find the prototype for them.

svn path=/trunk/; revision=6012
2003-09-08 09:56:57 +00:00

573 lines
15 KiB
C

/*
* 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
*/
#ifndef __WINE_NTSECAPI_H
#define __WINE_NTSECAPI_H
#ifdef __cplusplus
extern "C" {
#endif /* defined(__cplusplus) */
typedef enum _SECURITY_LOGON_TYPE {
Interactive = 2,
Network,
Batch,
Service,
Proxy,
Unlock,
NetworkCleartext,
NewCredentials,
RemoteInteractive,
CachedInteractive,
CachedRemoteInteractive,
CachedUnlock
} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
typedef enum _POLICY_NOTIFICATION_INFORMATION_CLASS {
PolicyNotifyAuditEventsInformation = 1,
PolicyNotifyAccountDomainInformation,
PolicyNotifyServerRoleInformation,
PolicyNotifyDnsDomainInformation,
PolicyNotifyDomainEfsInformation,
PolicyNotifyDomainKerberosTicketInformation,
PolicyNotifyMachineAccountPasswordInformation
} POLICY_NOTIFICATION_INFORMATION_CLASS, *PPOLICY_NOTIFICATION_INFORMATION_CLASS;
typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE;
/* 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)
typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
/* FIXME: Microsoft declares an LSA_STRING as ascii but changing this breaks secur32.dll so someone will need to figure out what to do here */
typedef struct _LSA_STRING
{
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} LSA_STRING, *PLSA_STRING;
typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
typedef PVOID LSA_HANDLE, *PLSA_HANDLE;
typedef enum
{
PolicyAuditLogInformation = 1,
PolicyAuditEventsInformation,
PolicyPrimaryDomainInformation,
PolicyPdAccountInformation,
PolicyAccountDomainInformation,
PolicyLsaServerRoleInformation,
PolicyReplicaSourceInformation,
PolicyDefaultQuotaInformation,
PolicyModificationInformation,
PolicyAuditFullSetInformation,
PolicyAuditFullQueryInformation,
PolicyDnsDomainInformation
} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS;
typedef struct _POLICY_AUDIT_EVENTS_INFO
{
WINBOOL AuditingMode;
PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions;
ULONG MaximumAuditEventCount;
} POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO;
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;
#define MAX_FOREST_TRUST_BINARY_DATA_SIZE ( 128 * 1024 )
typedef struct _LSA_FOREST_TRUST_BINARY_DATA {
ULONG Length;
PUCHAR Buffer;
} LSA_FOREST_TRUST_BINARY_DATA, *PLSA_FOREST_TRUST_BINARY_DATA;
typedef enum {
ForestTrustTopLevelName,
ForestTrustTopLevelNameEx,
ForestTrustDomainInfo,
ForestTrustRecordTypeLast = ForestTrustDomainInfo
} LSA_FOREST_TRUST_RECORD_TYPE;
typedef struct _LSA_AUTH_INFORMATION {
LARGE_INTEGER LastUpdateTime;
ULONG AuthType;
ULONG AuthInfoLength;
PUCHAR AuthInfo;
} LSA_AUTH_INFORMATION, *PLSA_AUTH_INFORMATION;
typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION {
ULONG IncomingAuthInfos;
PLSA_AUTH_INFORMATION IncomingAuthenticationInformation;
PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation;
ULONG OutgoingAuthInfos;
PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation;
PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation;
} TRUSTED_DOMAIN_AUTH_INFORMATION, *PTRUSTED_DOMAIN_AUTH_INFORMATION;
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_TRANSLATED_SID {
SID_NAME_USE Use;
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;
LONG DomainIndex;
} LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME;
typedef enum {
CollisionTdo,
CollisionXref,
CollisionOther
} LSA_FOREST_TRUST_COLLISION_RECORD_TYPE;
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 _TRUSTED_DOMAIN_INFORMATION_EX {
LSA_UNICODE_STRING Name;
LSA_UNICODE_STRING FlatName;
PSID Sid;
ULONG TrustDirection;
ULONG TrustType;
ULONG TrustAttributes;
} TRUSTED_DOMAIN_INFORMATION_EX, *PTRUSTED_DOMAIN_INFORMATION_EX;
typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE;
typedef struct _LSA_TRUST_INFORMATION {
LSA_UNICODE_STRING Name;
PSID Sid;
} LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION;
typedef struct _LSA_REFERENCED_DOMAIN_LIST {
ULONG Entries;
PLSA_TRUST_INFORMATION Domains;
} LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST;
typedef enum _POLICY_DOMAIN_INFORMATION_CLASS {
PolicyDomainEfsInformation = 2,
PolicyDomainKerberosTicketInformation
} POLICY_DOMAIN_INFORMATION_CLASS, *PPOLICY_DOMAIN_INFORMATION_CLASS;
typedef struct _POLICY_PRIMARY_DOMAIN_INFO
{
LSA_UNICODE_STRING Name;
PSID Sid;
} POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO;
typedef struct _POLICY_ACCOUNT_DOMAIN_INFO
{
LSA_UNICODE_STRING DomainName;
PSID DomainSid;
} POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO;
typedef struct _LSA_FOREST_TRUST_INFORMATION {
ULONG RecordCount;
PLSA_FOREST_TRUST_RECORD * Entries;
} LSA_FOREST_TRUST_INFORMATION, *PLSA_FOREST_TRUST_INFORMATION;
typedef struct _SECURITY_LOGON_SESSION_DATA {
ULONG Size ;
LUID LogonId ;
LSA_UNICODE_STRING UserName ;
LSA_UNICODE_STRING LogonDomain ;
LSA_UNICODE_STRING AuthenticationPackage ;
ULONG LogonType ;
ULONG Session ;
PSID Sid ;
LARGE_INTEGER LogonTime ;
LSA_UNICODE_STRING LogonServer ;
LSA_UNICODE_STRING DnsDomainName ;
LSA_UNICODE_STRING Upn ;
} SECURITY_LOGON_SESSION_DATA, * PSECURITY_LOGON_SESSION_DATA ;
typedef enum _TRUSTED_INFORMATION_CLASS {
TrustedDomainNameInformation = 1,
TrustedControllersInformation,
TrustedPosixOffsetInformation,
TrustedPasswordInformation,
TrustedDomainInformationBasic,
TrustedDomainInformationEx,
TrustedDomainAuthInformation,
TrustedDomainFullInformation,
TrustedDomainAuthInformationInternal,
TrustedDomainFullInformationInternal,
TrustedDomainInformationEx2Internal,
TrustedDomainFullInformation2Internal,
} TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS;
ULONG
STDCALL
LsaNtStatusToWinError(NTSTATUS Status);
NTSTATUS
STDCALL
LsaOpenPolicy(PLSA_UNICODE_STRING lsaucs,PLSA_OBJECT_ATTRIBUTES lsaoa,ACCESS_MASK access,PLSA_HANDLE lsah);
NTSTATUS
STDCALL
LsaQueryInformationPolicy(LSA_HANDLE lsah,POLICY_INFORMATION_CLASS pic,PVOID* pv);
NTSTATUS
STDCALL
LsaFreeMemory(PVOID pv);
NTSTATUS
STDCALL
LsaClose(LSA_HANDLE ObjectHandle);
NTSTATUS
STDCALL
LsaAddAccountRights(
LSA_HANDLE PolicyHandle,
PSID AccountSid,
PLSA_UNICODE_STRING UserRights,
ULONG CountOfRights
);
NTSTATUS
STDCALL
LsaCreateTrustedDomainEx(
LSA_HANDLE PolicyHandle,
PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation,
ACCESS_MASK DesiredAccess,
PLSA_HANDLE TrustedDomainHandle
);
NTSTATUS
STDCALL
LsaDeleteTrustedDomain(
LSA_HANDLE PolicyHandle,
PSID TrustedDomainSid
);
NTSTATUS
STDCALL
LsaEnumerateAccountRights(
LSA_HANDLE PolicyHandle,
PSID AccountSid,
PLSA_UNICODE_STRING *UserRights,
PULONG CountOfRights
);
NTSTATUS
STDCALL
LsaEnumerateAccountsWithUserRight(
LSA_HANDLE PolicyHandle,
OPTIONAL PLSA_UNICODE_STRING UserRights,
PVOID *EnumerationBuffer,
PULONG CountReturned
);
NTSTATUS
STDCALL
LsaEnumerateTrustedDomains(
LSA_HANDLE PolicyHandle,
PLSA_ENUMERATION_HANDLE EnumerationContext,
PVOID *Buffer,
ULONG PreferedMaximumLength,
PULONG CountReturned
);
NTSTATUS
STDCALL
LsaEnumerateTrustedDomainsEx(
LSA_HANDLE PolicyHandle,
PLSA_ENUMERATION_HANDLE EnumerationContext,
PVOID *Buffer,
ULONG PreferedMaximumLength,
PULONG CountReturned
);
NTSTATUS
STDCALL
LsaLookupNames(
LSA_HANDLE PolicyHandle,
ULONG Count,
PLSA_UNICODE_STRING Names,
PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
PLSA_TRANSLATED_SID *Sids
);
NTSTATUS
STDCALL
LsaLookupNames2(
LSA_HANDLE PolicyHandle,
ULONG Flags,
ULONG Count,
PLSA_UNICODE_STRING Names,
PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
PLSA_TRANSLATED_SID2 *Sids
);
NTSTATUS
STDCALL
LsaLookupSids(
LSA_HANDLE PolicyHandle,
ULONG Count,
PSID *Sids,
PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
PLSA_TRANSLATED_NAME *Names
);
NTSTATUS
STDCALL
LsaOpenTrustedDomainByName(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING TrustedDomainName,
ACCESS_MASK DesiredAccess,
PLSA_HANDLE TrustedDomainHandle
);
NTSTATUS
STDCALL
LsaQueryDomainInformationPolicy(
LSA_HANDLE PolicyHandle,
POLICY_DOMAIN_INFORMATION_CLASS InformationClass,
PVOID *Buffer
);
NTSTATUS
STDCALL
LsaQueryForestTrustInformation(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING TrustedDomainName,
PLSA_FOREST_TRUST_INFORMATION * ForestTrustInfo
);
NTSTATUS
STDCALL
LsaQueryTrustedDomainInfoByName(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING TrustedDomainName,
TRUSTED_INFORMATION_CLASS InformationClass,
PVOID *Buffer
);
NTSTATUS
STDCALL
LsaQueryTrustedDomainInfo(
LSA_HANDLE PolicyHandle,
PSID TrustedDomainSid,
TRUSTED_INFORMATION_CLASS InformationClass,
PVOID *Buffer
);
NTSTATUS
STDCALL
LsaRemoveAccountRights(
LSA_HANDLE PolicyHandle,
PSID AccountSid,
WINBOOL AllRights,
PLSA_UNICODE_STRING UserRights,
ULONG CountOfRights
);
NTSTATUS
STDCALL
LsaRetrievePrivateData(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING KeyName,
PLSA_UNICODE_STRING * PrivateData
);
NTSTATUS
STDCALL
LsaSetDomainInformationPolicy(
LSA_HANDLE PolicyHandle,
POLICY_DOMAIN_INFORMATION_CLASS InformationClass,
PVOID Buffer
);
NTSTATUS
STDCALL
LsaSetInformationPolicy(
LSA_HANDLE PolicyHandle,
POLICY_INFORMATION_CLASS InformationClass,
PVOID Buffer
);
NTSTATUS
STDCALL
LsaSetForestTrustInformation(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING TrustedDomainName,
PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo,
WINBOOL CheckOnly,
PLSA_FOREST_TRUST_COLLISION_INFORMATION * CollisionInfo
);
NTSTATUS
STDCALL
LsaSetTrustedDomainInfoByName(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING TrustedDomainName,
TRUSTED_INFORMATION_CLASS InformationClass,
PVOID Buffer
);
NTSTATUS
STDCALL
LsaSetTrustedDomainInformation(
LSA_HANDLE PolicyHandle,
PSID TrustedDomainSid,
TRUSTED_INFORMATION_CLASS InformationClass,
PVOID Buffer
);
NTSTATUS
STDCALL
LsaStorePrivateData(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING KeyName,
PLSA_UNICODE_STRING PrivateData
);
NTSTATUS
STDCALL
LsaEnumerateLogonSessions(
PULONG LogonSessionCount,
PLUID * LogonSessionList
);
NTSTATUS
STDCALL
LsaGetLogonSessionData(
PLUID LogonId,
PSECURITY_LOGON_SESSION_DATA * ppLogonSessionData
);
NTSTATUS
STDCALL
LsaRegisterPolicyChangeNotification(
POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass,
HANDLE NotificationEventHandle
);
NTSTATUS
STDCALL
LsaUnregisterPolicyChangeNotification(
POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass,
HANDLE NotificationEventHandle
);
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */
#endif /* !defined(__WINE_NTSECAPI_H) */