a7087141376fc229f505c176b515e2a47954c078
[occt.git] / src / OSD / OSD_WNT_1.hxx
1 // Copyright (c) 1998-1999 Matra Datavision
2 // Copyright (c) 1999-2014 OPEN CASCADE SAS
3 //
4 // This file is part of Open CASCADE Technology software library.
5 //
6 // This library is free software; you can redistribute it and/or modify it under
7 // the terms of the GNU Lesser General Public License version 2.1 as published
8 // by the Free Software Foundation, with special exception defined in the file
9 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10 // distribution for complete text of the license and disclaimer of any warranty.
11 //
12 // Alternatively, this file may be used under the terms of Open CASCADE
13 // commercial license or contractual agreement.
14
15 #ifndef __OSD_WNT_H
16 # define __OSD_WNT_H
17
18 # ifndef STRICT
19 #  define STRICT
20 # endif  /* STRICT */
21
22 # ifndef _INC_WINDOWS
23 #  include <windows.h>
24 # endif  /* _INC_WINDOWS */
25
26 # ifndef OSDAPI
27 #  if !defined(HAVE_NO_DLL)
28 #   ifdef __OSD_DLL
29 #    define OSDAPI __declspec( dllexport )
30 #   else
31 #    define OSDAPI __declspec( dllimport )
32 #   endif  /* OSD_DLL */
33 #  else
34 #   define OSDAPI
35 #  endif
36 # endif  /* OSDAPI */
37
38 # ifdef __cplusplus
39 extern "C" {
40 # endif  /* __cplusplus */
41
42 enum DIR_RESPONSE { DIR_ABORT, DIR_RETRY, DIR_IGNORE };
43
44 #define FLAG_READ_PIPE  0x00000001
45 #define FLAG_EOF        0x00000002
46 #define FLAG_FILE       0x00000004
47 #define FLAG_DIRECTORY  0x00000008
48 #define FLAG_PIPE       0x00000010
49 #define FLAG_SOCKET     0x00000020
50 #define FLAG_NAMED_PIPE 0x00000040
51 #define FLAG_DEVICE     0x00000080
52 #define FLAG_TYPE       0x0000007C
53
54 // 2 macros modified for VisualAge
55 //#define LODWORD( a ) ( DWORD )(   ( ( DWORDLONG )( a ) ) & 0x00000000FFFFFFFF   )
56 //#define HIDWORD( a ) ( DWORD )(   ( ( DWORDLONG )( a ) ) >> 32                  )
57
58 #define LODWORD( a ) ( DWORD )(   ( ( _int64 )( a ) ) & 0x00000000FFFFFFFF   )
59 #define HIDWORD( a ) ( DWORD )(   ( ( _int64 )( a ) ) >> 32                  )
60
61 typedef struct _file_ace {
62
63                 ACE_HEADER header;
64                 DWORD      dwMask;
65                 PSID       pSID;
66
67                } FILE_ACE, *PFILE_ACE;
68
69 typedef void ( *MOVE_DIR_PROC   ) ( LPCWSTR, LPCWSTR );
70 typedef void ( *COPY_DIR_PROC   ) ( LPCWSTR, LPCWSTR );
71 typedef void ( *DELETE_DIR_PROC ) ( LPCWSTR          );
72
73 typedef DIR_RESPONSE ( *RESPONSE_DIR_PROC ) ( LPCWSTR );
74
75 #define GET_SID( pACE ) (  ( PSID )(   (  ( PBYTE )pACE    ) + \
76                                        sizeof ( ACE_HEADER ) + \
77                                        sizeof ( DWORD      )   \
78                                    )                           \
79                         )
80
81 #define GET_MSK( pACE ) (  ( PDWORD )(   (  ( PBYTE )pACE    ) + \
82                                          sizeof ( ACE_HEADER )   \
83                                      )                           \
84                         )
85
86 PSECURITY_DESCRIPTOR OSDAPI AllocSD ( void                 );
87 void                 OSDAPI FreeSD  ( PSECURITY_DESCRIPTOR );
88
89 LPVOID OSDAPI GetTokenInformationEx ( HANDLE, TOKEN_INFORMATION_CLASS );
90 void   OSDAPI FreeTokenInformation  ( LPVOID                          );
91
92 PSECURITY_DESCRIPTOR OSDAPI GetFileSecurityEx ( LPCWSTR, SECURITY_INFORMATION );
93 void                 OSDAPI FreeFileSecurity  ( PSECURITY_DESCRIPTOR          );
94
95 PACL OSDAPI CreateAcl ( DWORD );
96 void OSDAPI FreeAcl   ( PACL  );
97
98 BOOL OSDAPI PredefinedSid   ( PSID );
99 BOOL OSDAPI NtPredefinedSid ( PSID );
100 PSID OSDAPI AdminSid        ( void );
101 PSID OSDAPI WorldSid        ( void );
102 PSID OSDAPI InteractiveSid  ( void );
103 PSID OSDAPI NetworkSid      ( void );
104 PSID OSDAPI LocalSid        ( void );
105 PSID OSDAPI DialupSid       ( void );
106 PSID OSDAPI BatchSid        ( void );
107 PSID OSDAPI CreatorOwnerSid ( void );
108 PSID OSDAPI NullSid         ( void );
109 PSID OSDAPI NtSid           ( void );
110
111 PVOID OSDAPI AllocAccessAllowedAce ( DWORD, BYTE, PSID );
112 void  OSDAPI FreeAce ( PVOID );
113
114 BOOL OSDAPI MoveDirectory   ( LPCWSTR, LPCWSTR );
115 BOOL OSDAPI CopyDirectory   ( LPCWSTR, LPCWSTR );
116
117 void OSDAPI SetMoveDirectoryProc     ( MOVE_DIR_PROC     );
118 void OSDAPI SetCopyDirectoryProc     ( COPY_DIR_PROC     );
119 void OSDAPI SetResponseDirectoryProc ( RESPONSE_DIR_PROC );
120
121 # ifdef __cplusplus
122 }
123 # endif  /* __cplusplus */
124
125 #endif  /* __OSD_WNT_H */