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