/* MODULE nta_post_public.h ******************************************************************************* ** ** Copyright (c) Digital Equipment Corporation, 1992-1997 ** All Rights Reserved. Unpublished rights reserved ** under the copyright laws of the United States. ** ** The software contained in this media is proprietary ** to and embodies the confidential technology of ** Digital Equipment Corporation. Possession, use, ** duplication or dissemination of the software and ** media is authorized only pursuant to a valid written ** license from Digital Equipment Corporation. ** ** RESTRICTED RIGHTS LEGEND Use, duplication, or ** disclosure by the U.S. Government is subject to ** restrictions as set forth in Subparagraph (c) (1) (ii) ** of DFARS 252.227-7013, or in FAR 52.227-19, as ** applicable. ** ****************************************************************************** ** **++ ** FACILITY: OpenVMS NT Affinity ** ** MODULE DESCRIPTION: ** ** This module contains all the definitions which must be made after ** including any the various ASU header files; which must be public ** to the Win32 Support providers. ** ** AUTHORS: ** ** L. Mark Pilant ** ** CREATION DATE: 17-Sep-1997 ** ** MODIFICATION HISTORY: ** ** X-11 LMP0610 L. Mark Pilant, 1-MAR-1999 13:32 ** Make sure the event status block is defined properly for those ** files being built without NEW_STARLET. ** ** X-10 LMP0610 L. Mark Pilant, 25-FEB-1999 14:18 ** Add prototype for NTA$EVENTW. ** ** X-9 LMP0596 L. Mark Pilant, 11-MAY-1998 13:13 ** Add a missing routine prototype: ** NTA$RTLGETCONTROLSECURITYDESCRIPTOR. ** ** X-8 LMP0592 L. Mark Pilant, 14-APR-1998 12:45 ** Change NTA$AufitStateTimer to NTA$AuditStateTimer. ** ** X-7 LMP0582 L. Mark Pilant, 22-JAN-1998 12:45 ** Add some new function prototypes. ** ** X-6 LMP0574 L. Mark Pilant, 17-DEC-1997 10:26 ** Add CreateProcess and CreateProcessAsUser support. Also ** correct ident/generation skew (no X-5). ** ** X-4 SAL002 Scott LePage 09-Dec-1997 ** Moved some prototypes to NTA_POST.H. Changed error ** in function name for NTA$VMSCloseAccessToken. ** ** X-3 LMP0571 L. Mark Pilant, 25-NOV-1997 14:45 ** Change prototype definition for VMSSEPSINGLEPRIVILEGECHECK ** to accomodate SE_xxx privilege use. ** ** X-1A3 LMP0570 L. Mark Pilant, 20-NOV-1997 14:55 ** Incorporate code review changes. ** ** X-1A2 LMP0569 L. Mark Pilant, 29-SEP-1997 16:09 ** Change some of the actual routine names (to track the functional ** specification) and remove a number of #define statements to ** avoid conflicts with Win32 support providers. ** ** X-1A1 LMP0568 L. Mark Pilant, 17-SEP-1997 ** Split out the public definitions to make distribution to ** Win32 support providers easier. ** **-- */ #ifndef _NTA_POST_PUBLIC_ #define _NTA_POST_PUBLIC_ #include /* ** Define the internal routine function prototypes. The function names are ** in all upper-case characters to make the OpenVMS linker happy. However, ** the mixed-case names have been defined (in a separate header file) to ** follow the Microsoft naming standard. */ void NTA$EXALLOCATELOCALLYUNIQUEID ( LARGE_INTEGER *luidp ); LONG NTA$MAPSATORPCSA ( LPSECURITY_ATTRIBUTES lpSA, PRPC_SECURITY_ATTRIBUTES pRpcSA); LONG NTA$MAPSDTORPCSD ( PSECURITY_DESCRIPTOR lpSD, PRPC_SECURITY_DESCRIPTOR pRpcSD); NTSTATUS NTA$NETPCREATESECURITYDESCRIPTOR ( IN PACE_DATA AceData, IN ULONG AceCount, IN PSID OwnerSid OPTIONAL, IN PSID GroupSid OPTIONAL, OUT PSECURITY_DESCRIPTOR *NewDescriptor ); NTSTATUS NTA$NTIMPORTSECURITYDESCRIPTORINPLACE ( /* Different from Microsoft */ IN SECURITY_DESCRIPTOR *sd, IN size_t Length ); NTSTATUS NTAPI NTA$RTLADDACCESSALLOWEDACE ( PACL Acl, unsigned long AceRevision, ACCESS_MASK AccessMask, PSID Sid ); NTSTATUS NTAPI NTA$RTLADDACCESSDENIEDACE ( PACL Acl, unsigned long AceRevision, ACCESS_MASK AccessMask, PSID Sid ); NTSTATUS NTAPI NTA$RTLADDACE ( PACL Acl, unsigned long AceRevision, unsigned long StartingAceIndex, void * AceList, unsigned long AceListLength ); NTSTATUS NTAPI NTA$RTLADDAUDITACCESSACE ( PACL pAcl, DWORD dwAceRevision, DWORD dwAccessMask, PSID pSid, BOOL bAuditSuccess, BOOL bAuditFailure ); NTSTATUS NTA$RTLADJUSTPRIVILEGE ( IN ULONG Privilege, IN BOOLEAN Enable, IN BOOLEAN Client, OUT PBOOLEAN WasEnabled ); #define NTA$RtlAdjustPrivilege NTA$RTLADJUSTPRIVILEGE NTSTATUS NTAPI NTA$RTLALLOCATEANDINITIALIZESID ( IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, IN UCHAR SubAuthorityCount, IN unsigned long SubAuthority0, IN unsigned long SubAuthority1, IN unsigned long SubAuthority2, IN unsigned long SubAuthority3, IN unsigned long SubAuthority4, IN unsigned long SubAuthority5, IN unsigned long SubAuthority6, IN unsigned long SubAuthority7, OUT PSID *Sid ); NTSTATUS NTAPI NTA$RTLCOPYSID ( unsigned long DestinationSidLength, PSID DestinationSid, PSID SourceSid ); NTSTATUS NTAPI NTA$RTLCREATEACL ( PACL Acl, unsigned long AclLength, unsigned long AclRevision ); NTSTATUS NTAPI NTA$RTLCREATESECURITYDESCRIPTOR ( PSECURITY_DESCRIPTOR SecurityDescriptor, unsigned long Revision ); NTSTATUS NTAPI NTA$RTLDELETEACE ( IN OUT PACL Acl, IN ULONG AceIndex ); BOOLEAN NTAPI NTA$RTLEQUALSID ( PSID Sid1, PSID Sid2 ); void * NTAPI NTA$RTLFREESID ( IN PSID Sid ); NTSTATUS NTAPI NTA$RTLGETACE ( PACL Acl, unsigned long AceIndex, void * *Ace ); NTSTATUS NTAPI NTA$RTLGETCONTROLSECURITYDESCRIPTOR ( PSECURITY_DESCRIPTOR SecurityDescriptor, PSECURITY_DESCRIPTOR_CONTROL Control, unsigned long * Revision ); NTSTATUS NTAPI NTA$RTLGETDACLSECURITYDESCRIPTOR ( PSECURITY_DESCRIPTOR SecurityDescriptor, PBOOLEAN DaclPresent, PACL *Dacl, PBOOLEAN DaclDefaulted ); NTSTATUS NTAPI NTA$RTLGETGROUPSECURITYDESCRIPTOR ( PSECURITY_DESCRIPTOR SecurityDescriptor, PSID *Group, PBOOLEAN GroupDefaulted ); NTSTATUS NTAPI NTA$RTLGETOWNERSECURITYDESCRIPTOR ( PSECURITY_DESCRIPTOR SecurityDescriptor, PSID *Owner, PBOOLEAN OwnerDefaulted ); NTSTATUS NTAPI NTA$RTLGETSACLSECURITYDESCRIPTOR ( PSECURITY_DESCRIPTOR SecurityDescriptor, PBOOLEAN SaclPresent, PACL *Sacl, PBOOLEAN SaclDefaulted ); NTSTATUS NTAPI NTA$RTLINITIALIZESID ( IN PSID Sid, IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, IN UCHAR SubAuthorityCount ); unsigned long NTAPI NTA$RTLLENGTHSECURITYDESCRIPTOR ( PSECURITY_DESCRIPTOR SecurityDescriptor ); NTSTATUS NTAPI NTA$RTLMAKESELFRELATIVESD ( PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor, PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor, unsigned long * BufferLength ); void NTAPI NTA$RTLMAPGENERICMASK ( PACCESS_MASK AccessMask, PGENERIC_MAPPING GenericMapping ); NTSTATUS NTAPI NTA$RTLQUERYINFORMATIONACL ( PACL Acl, void * AclInformation, unsigned long AclInformationLength, ACL_INFORMATION_CLASS AclInformationClass ); NTSTATUS NTAPI NTA$RTLSETDACLSECURITYDESCRIPTOR ( PSECURITY_DESCRIPTOR SecurityDescriptor, BOOLEAN DaclPresent, PACL Dacl, BOOLEAN DaclDefaulted ); NTSTATUS NTAPI NTA$RTLSETGROUPSECURITYDESCRIPTOR ( PSECURITY_DESCRIPTOR SecurityDescriptor, PSID Group, BOOLEAN GroupDefaulted ); NTSTATUS NTAPI NTA$RTLSETINFORMATIONACL ( IN PACL Acl, IN PVOID AclInformation, IN ULONG AclInformationLength, IN ACL_INFORMATION_CLASS AclInformationClass ); NTSTATUS NTAPI NTA$RTLSETOWNERSECURITYDESCRIPTOR ( PSECURITY_DESCRIPTOR SecurityDescriptor, PSID Owner, BOOLEAN OwnerDefaulted ); NTSTATUS NTAPI NTA$RTLSETSACLSECURITYDESCRIPTOR ( PSECURITY_DESCRIPTOR SecurityDescriptor, BOOLEAN SaclPresent, PACL Sacl, BOOLEAN SaclDefaulted ); BOOLEAN NTA$RTLVALIDACL ( IN PACL Acl ); BOOLEAN NTAPI NTA$RTLVALIDSECURITYDESCRIPTOR ( PSECURITY_DESCRIPTOR SecurityDescriptor ); BOOLEAN NTAPI NTA$RTLVALIDSID ( PSID Sid ); void NTA$SEQUERYSECURITYACCESSMASK ( IN SECURITY_INFORMATION SecurityInformation, OUT PACCESS_MASK DesiredAccess ); void NTA$SESETSECURITYACCESSMASK ( IN SECURITY_INFORMATION SecurityInformation, OUT PACCESS_MASK DesiredAccess ); NTSTATUS NTA$VMSCREATEPROCESSW ( IN LPUCS4STR ApplicationName, IN LPUCS4STR CommandLine, IN LPSECURITY_ATTRIBUTES Procattr, IN LPSECURITY_ATTRIBUTES ThdAttr, IN BOOL InheritHandles, IN DWORD CreationFlags, IN LPVOID Environment, IN LPUCS4STR CurrentDirectory, IN LPSTARTUPINFO StartupInfo, OUT LPPROCESS_INFORMATION ProcessInformation ); #define NTA$VMSCreateProcessW NTA$VMSCREATEPROCESSW NTSTATUS NTA$VMSCREATEPROCESSASUSERW ( IN PPERID PersonaId, IN LPUCS4STR ApplicationName, IN LPUCS4STR CommandLine, IN LPSECURITY_ATTRIBUTES Procattr, IN LPSECURITY_ATTRIBUTES ThdAttr, IN BOOL InheritHandles, IN DWORD CreationFlags, IN LPVOID Environment, IN LPUCS4STR CurrentDirectory, IN LPSTARTUPINFO StartupInfo, OUT LPPROCESS_INFORMATION ProcessInformation ); #define NTA$VMSCreateProcessAsUserW NTA$VMSCREATEPROCESSASUSERW NTSTATUS NTA$VMSCREATETHREAD ( LPSECURITY_ATTRIBUTES lpThreadAttributes, /* pointer to thread security attributes (must be zero) */ DWORD dwStackSize, /* initial thread stack size, in bytes */ LPTHREAD_START_ROUTINE lpStartAddress, /* pointer to thread function */ LPVOID lpParameter, /* argument for new thread */ DWORD dwCreationFlags, /* creation flags (must be zero) */ LPDWORD lpThreadId /* pointer to returned thread id */ ); #define NTA$VMSCreateThread NTA$VMSCREATETHREAD NTSTATUS NTA$VMSLOGONUSERW ( IN LPUCS4STR Username, IN LPUCS4STR Domain, IN LPUCS4STR Password, IN DWORD LogonType, IN DWORD ProviderType, OUT PPERID PersonId ); #define NTA$VMSLogonUserW NTA$VMSLOGONUSERW NTSTATUS NTA$VMSLOOKUPACCOUNTNAMEW ( IN LPUCS4STR SystemName, IN LPUCS4STR Name, OUT PSID Sid, OUT LPDWORD cbSid, OUT LPUCS4STR Domain, OUT LPDWORD cbDomain, OUT PSID_NAME_USE pUse ); #define NTA$VMSLookupAccountNameW NTA$VMSLOOKUPACCOUNTNAMEW NTSTATUS NTA$VMSLOOKUPACCOUNTSIDW ( IN LPUCS4STR SystemName, IN PSID Sid, OUT LPUCS4STR Name, OUT LPDWORD cbName, OUT LPUCS4STR Domain, OUT LPDWORD cbDomain, OUT PSID_NAME_USE pUse ); #define NTA$VMSLookupAccountSidW NTA$VMSLOOKUPACCOUNTSIDW NTSTATUS NTA$VMSCLOSEACCESSTOKEN ( IN PPERID PersonaId ); #define NTA$VMSCloseAccessToken NTA$VMSCLOSEACCESSTOKEN NTSTATUS NTA$VMSNTDUPLICATETOKEN ( IN PPERID ExistingPersonaId, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN BOOLEAN EffectiveOnly, IN TOKEN_TYPE TokenType, OUT PPERID NewPersonaId ); #define NTA$VMSNtDuplicateToken NTA$VMSNTDUPLICATETOKEN NTSTATUS NTA$VMSNTOPENPROCESSTOKEN ( IN HANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, OUT PPERID PersonaId ); #define NTA$VMSNtOpenProcessToken NTA$VMSNTOPENPROCESSTOKEN NTSTATUS NTA$VMSNTOPENTHREADTOKEN ( IN HANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN BOOLEAN OpenAsSelf, OUT PPERID PersonaId ); #define NTA$VMSNtOpenThreadToken NTA$VMSNTOPENTHREADTOKEN NTSTATUS NTA$VMSNTPRIVILEGEDSERVICEAUDITALARM ( IN PSECURITY_SUBJECT_CONTEXT Subject, IN PMBSCHAR_STRING SubsystemName, IN PMBSCHAR_STRING ServiceName, IN PPRIVILEGE_SET Privileges, IN BOOLEAN AccessGranted ); NTSTATUS NTA$VMSNTQUERYINFORMATIONTOKEN ( IN PPERID PersonaId, IN TOKEN_INFORMATION_CLASS TokenInformationClass, OUT PVOID TokenInfo, IN ULONG TokenInfoLen, OUT PULONG RetLen ); #define NTA$VMSNtQueryInformationToken NTA$VMSNTQUERYINFORMATIONTOKEN NTSTATUS NTA$VMSNTSETINFORMATIONTHREAD ( HANDLE ThreadHandle, /* Thread whose information is to be set */ THREADINFOCLASS ThreadInformationClass, /* Information class about which to receive information */ PVOID ThreadInformation, /* Buffer containing information to set */ ULONG ThreadInfoLength /* Size of the information to set */ ); BOOLEAN NTA$VMSSEPSINGLEPRIVILEGECHECK ( TOKEN *token, ULONG privilege ); /* Functions to support OpenVMS specific functionality. */ void NTA$AUDITSTATETIMER (); #define NTA$AuditStateTimer NTA$AUDITSTATETIMER #ifndef __NEW_STARLET #define EVSB evsb #endif /* __NEW_STARLET */ VMSSTATUS NTA$EVENTW (unsigned int EventFlagNumber, unsigned int FunctionCode, void *ItemList, EVSB *EventStatusBlock); #define NTA$EventW NTA$EVENTW VMSSTATUS NTA$INITIALIZE (); #define NTA$Initialize NTA$INITIALIZE VMSSTATUS NTA$SETAUDITSTATE ( PADT_CONTROL new_audit_state /* Audit state vector */ ); #define NTA$SetAuditState NTA$SETAUDITSTATE VMSSTATUS NTA$SETAUDITTIMERDELTA ( char *delta_time_string /* Delta time string */ ); #define NTA$SetAuditTimerDelta NTA$SETAUDITTIMERDELTA VMSSTATUS NTA$SETAUDITTIMER (); #define NTA$SetAuditTimer NTA$SETAUDITTIMER NTSTATUS NTA$VMSNTACCESSCHECK ( IN PSECURITY_DESCRIPTOR pSecurityDescriptor, IN PPERID PersonaId, IN DWORD DesiredAccess, IN PGENERIC_MAPPING GenericMapping, OUT PPRIVILEGE_SET PrivilegeSet, IN OUT LPDWORD PrivilegeSetLength, OUT LPDWORD GrantedAccess, OUT PNTSTATUS AccessStatus ); #define NTA$VMSNtAccessCheck NTA$VMSNTACCESSCHECK NTSTATUS NTA$VMSNTACCESSCHECKANDAUDITALARM ( IN PPERID PersonaId, IN LPUCS4STR SubsystemName, IN PVOID HandleId, IN LPUCS4STR ObjectTypeName, IN LPUCS4STR ObjectName, IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN ACCESS_MASK DesiredAccess, IN PGENERIC_MAPPING GenericMapping, OUT PACCESS_MASK GrantedAccess, OUT PNTSTATUS AccessStatus, OUT PBOOLEAN GenerateOnClose ); #define NTA$VMSNtAccessCheckAndAuditAlarm NTA$VMSNTACCESSCHECKANDAUDITALARM NTSTATUS NTA$VMSNTOPENOBJECTAUDITALARM ( IN PPERID PersonaId, IN LPUCS4STR SubsystemName, IN PVOID HandleId OPTIONAL, IN LPUCS4STR ObjectTypeName, IN LPUCS4STR ObjectName, IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK GrantedAccess, IN PPRIVILEGE_SET Privileges OPTIONAL, IN BOOLEAN AccessGranted, OUT PBOOLEAN GenerateOnClose ); #define NTA$VMSNtOpenObjectAuditAlarm NTA$VMSNTOPENOBJECTAUDITALARM NTSTATUS NTA$VMSPTHREADTODOSERROR ( int pthread_status, /* Pthread status to convert */ int level /* Error code conversion flag */ ); #define NTA$VMSPthreadToDosError NTA$VMSPTHREADTODOSERROR BOOLEAN NTA$VMSSEACCESSCHECK ( IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN PPERID PersonaId, IN ACCESS_MASK DesiredAccess, IN ACCESS_MASK PreviouslyGrantedAccess, IN PGENERIC_MAPPING GenericMapping, OUT PACCESS_MASK GrantedAccess, OUT PNTSTATUS AccessStatus ); #define NTA$VMSSeAccessCheck NTA$VMSSEACCESSCHECK NTSTATUS NTA$VMSSEASSIGNSECURITY ( IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL, IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL, OUT PSECURITY_DESCRIPTOR *NewDescriptor, IN BOOLEAN IsDirectoryObject, IN PPERID PersonaId, IN PGENERIC_MAPPING GenericMapping, IN BOOLEAN AssignCreatorOwner ); #define NTA$VMSSeAssignSecurity NTA$VMSSEASSIGNSECURITY NTSTATUS NTA$VMSSEQUERYSECURITYDESCRIPTORINFO ( IN SECURITY_INFORMATION SecurityInformation, OUT PSECURITY_DESCRIPTOR SecurityDescriptor, IN OUT PULONG Length, IN PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor ); #define NTA$VMSSeQuerySecurityDescriptorInfo NTA$VMSSEQUERYSECURITYDESCRIPTORINFO NTSTATUS NTA$VMSSESETSECURITYDESCRIPTORINFO ( IN PPERID PersonaId, IN SECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR ModificationDescriptor, IN OUT PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, IN PGENERIC_MAPPING GenericMapping ); #define NTA$VMSSeSetSecurityDescriptorInfo NTA$VMSSESETSECURITYDESCRIPTORINFO #endif /* _NTA_POST_PUBLIC_ */