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