1 /* 2 Copyright (c) 1990-2000 Info-ZIP. All rights reserved. 3 4 See the accompanying file LICENSE, version 2000-Apr-09 or later 5 (the contents of which are also included in zip.h) for terms of use. 6 If, for some reason, all these files are missing, the Info-ZIP license 7 also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html 8 */ 9 /* rsxntwin.h 10 * 11 * fills some gaps in the rsxnt 1.3 win32 header files (<windows.h>) that are 12 * required for compiling Info-ZIP sources for Win NT / Win 95 13 */ 14 15 #ifdef __RSXNT__ 16 #if !defined (_RSXNTWIN_H) 17 #define _RSXNTWIN_H 18 19 #ifdef TFUNCT /* TFUNCT is undefined when MSSDK headers are used */ 20 21 #ifdef __cplusplus 22 extern "C" { 23 #endif 24 25 #define PASCAL __stdcall 26 27 #define ANYSIZE_ARRAY 1 28 29 #ifndef TIME_ZONE_ID_UNKNOWN 30 # define TIME_ZONE_ID_UNKNOWN 0 31 #endif 32 #ifndef TIME_ZONE_ID_INVALID 33 # define TIME_ZONE_ID_INVALID (DWORD)0xFFFFFFFFL 34 #endif 35 36 #define FILE_ATTRIBUTE_HIDDEN 0x00000002 37 #define FILE_ATTRIBUTE_SYSTEM 0x00000004 38 39 #define FILE_SHARE_DELETE 0x00000004 40 41 #define FILE_PERSISTENT_ACLS 0x00000008 42 43 #define HFILE_ERROR ((HFILE)-1) 44 45 #define FS_PERSISTENT_ACLS FILE_PERSISTENT_ACLS 46 47 48 BOOL WINAPI DosDateTimeToFileTime(WORD, WORD, LPFILETIME); 49 50 51 #ifndef SetVolumeLabel 52 #define SetVolumeLabel TFUNCT(SetVolumeLabel) 53 #endif 54 BOOL WINAPI SetVolumeLabel(LPCTSTR, LPCTSTR); 55 56 57 #ifndef GetDriveType 58 #define GetDriveType TFUNCT(GetDriveType) 59 #endif 60 DWORD GetDriveType(LPCTSTR); 61 62 #define DRIVE_UNKNOWN 0 63 #define DRIVE_REMOVABLE 2 64 #define DRIVE_FIXED 3 65 #define DRIVE_REMOTE 4 66 #define DRIVE_CDROM 5 67 #define DRIVE_RAMDISK 6 68 69 #ifndef SearchPath 70 #define SearchPath TFUNCT(SearchPath) 71 #endif 72 BOOL WINAPI SearchPath(LPCTSTR, LPCTSTR, LPCTSTR, UINT, LPTSTR, LPTSTR *); 73 74 #define ERROR_SUCCESS 0 75 #define ERROR_INSUFFICIENT_BUFFER 122 76 77 LONG WINAPI InterlockedExchange(LPLONG, LONG); 78 79 #define ACCESS_SYSTEM_SECURITY 0x01000000L 80 81 typedef PVOID PSECURITY_DESCRIPTOR; 82 typedef PVOID PSID; 83 typedef struct _ACL { 84 BYTE AclRevision; 85 BYTE Sbz1; 86 WORD AclSize; 87 WORD AceCount; 88 WORD Sbz2; 89 } ACL; 90 typedef ACL *PACL; 91 92 typedef struct _LUID { 93 DWORD LowPart; 94 LONG HighPart; 95 } LUID, *PLUID; 96 97 typedef struct _LUID_AND_ATTRIBUTES { 98 LUID Luid; 99 DWORD Attributes; 100 } LUID_AND_ATTRIBUTES, * PLUID_AND_ATTRIBUTES; 101 102 typedef struct _TOKEN_PRIVILEGES { 103 DWORD PrivilegeCount; 104 LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; 105 } TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES; 106 107 #define TOKEN_QUERY 0x0008 108 #define TOKEN_ADJUST_PRIVILEGES 0x0020 109 110 BOOL WINAPI OpenProcessToken(HANDLE, DWORD, PHANDLE); 111 BOOL WINAPI AdjustTokenPrivileges(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, 112 PTOKEN_PRIVILEGES, PDWORD); 113 114 #ifndef LookupPrivilegeValue 115 #define LookupPrivilegeValue TFUNCT(LookupPrivilegeValue) 116 #endif 117 BOOL WINAPI LookupPrivilegeValue(LPCTSTR, LPCTSTR, PLUID); 118 119 typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION; 120 #define OWNER_SECURITY_INFORMATION 0x00000001L 121 #define GROUP_SECURITY_INFORMATION 0x00000002L 122 #define DACL_SECURITY_INFORMATION 0x00000004L 123 #define SACL_SECURITY_INFORMATION 0x00000008L 124 125 typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL; 126 #define SE_DACL_PRESENT 0x0004 127 #define SE_SACL_PRESENT 0x0010 128 129 #define SE_PRIVILEGE_ENABLED 0x00000002L 130 131 #define SE_SECURITY_NAME TEXT("SeSecurityPrivilege") 132 #define SE_BACKUP_NAME TEXT("SeBackupPrivilege") 133 #define SE_RESTORE_NAME TEXT("SeRestorePrivilege") 134 135 BOOL WINAPI GetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, 136 PSECURITY_DESCRIPTOR, DWORD, LPDWORD); 137 BOOL WINAPI SetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, 138 PSECURITY_DESCRIPTOR); 139 BOOL WINAPI IsValidSid(PSID); 140 BOOL WINAPI IsValidAcl(PACL); 141 BOOL WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR); 142 BOOL WINAPI IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR); 143 DWORD WINAPI GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR); 144 BOOL WINAPI GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, 145 PSECURITY_DESCRIPTOR_CONTROL, LPDWORD); 146 BOOL WINAPI SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, 147 SECURITY_DESCRIPTOR_CONTROL, SECURITY_DESCRIPTOR_CONTROL); 148 BOOL WINAPI GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, 149 LPBOOL, PACL *, LPBOOL); 150 BOOL WINAPI SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); 151 BOOL WINAPI GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, 152 LPBOOL, PACL *, LPBOOL); 153 BOOL WINAPI SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); 154 BOOL WINAPI GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID *, LPBOOL); 155 BOOL WINAPI SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID, BOOL); 156 BOOL WINAPI GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID *, LPBOOL); 157 BOOL WINAPI SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID, BOOL); 158 VOID WINAPI InitializeCriticalSection(); 159 160 #ifdef __cplusplus 161 } 162 #endif 163 164 #endif /* TFUNCT */ 165 #endif /* !defined (_RSXNTWIN_H) */ 166 #endif /* __RSXNT__ */ 167