]> wimlib.net Git - wimlib/blob - include/wimlib/win32_common.h
Move code from win32_common.c to win32_apply.c
[wimlib] / include / wimlib / win32_common.h
1 #ifndef _WIMLIB_WIN32_COMMON_H
2 #define _WIMLIB_WIN32_COMMON_H
3
4 #include <windows.h>
5 #ifdef ERROR
6 #  undef ERROR
7 #endif
8
9 #include "wimlib/types.h"
10 #include "wimlib/win32.h"
11
12 #include <ntstatus.h>
13 #include <winternl.h>
14
15 extern void
16 set_errno_from_GetLastError(void);
17
18 extern void
19 set_errno_from_win32_error(DWORD err);
20
21 extern void
22 set_errno_from_nt_status(NTSTATUS status);
23
24 extern HANDLE
25 win32_open_existing_file(const wchar_t *path, DWORD dwDesiredAccess);
26
27 /* Vista and later */
28 extern BOOL (WINAPI *func_CreateSymbolicLinkW)(const wchar_t *lpSymlinkFileName,
29                                                const wchar_t *lpTargetFileName,
30                                                DWORD dwFlags);
31
32 /* ntdll functions  */
33
34 extern NTSTATUS (WINAPI *func_NtOpenFile) (PHANDLE FileHandle,
35                                            ACCESS_MASK DesiredAccess,
36                                            POBJECT_ATTRIBUTES ObjectAttributes,
37                                            PIO_STATUS_BLOCK IoStatusBlock,
38                                            ULONG ShareAccess,
39                                            ULONG OpenOptions);
40
41 extern NTSTATUS (WINAPI *func_NtReadFile) (HANDLE FileHandle,
42                                            HANDLE Event,
43                                            PIO_APC_ROUTINE ApcRoutine,
44                                            PVOID ApcContext,
45                                            PIO_STATUS_BLOCK IoStatusBlock,
46                                            PVOID Buffer,
47                                            ULONG Length,
48                                            PLARGE_INTEGER ByteOffset,
49                                            PULONG Key);
50
51 extern NTSTATUS (WINAPI *func_NtQueryInformationFile)(HANDLE FileHandle,
52                                                       PIO_STATUS_BLOCK IoStatusBlock,
53                                                       PVOID FileInformation,
54                                                       ULONG Length,
55                                                       FILE_INFORMATION_CLASS FileInformationClass);
56
57 extern NTSTATUS (WINAPI *func_NtQuerySecurityObject)(HANDLE handle,
58                                                      SECURITY_INFORMATION SecurityInformation,
59                                                      PSECURITY_DESCRIPTOR SecurityDescriptor,
60                                                      ULONG Length,
61                                                      PULONG LengthNeeded);
62
63 extern NTSTATUS (WINAPI *func_NtQueryDirectoryFile) (HANDLE FileHandle,
64                                                      HANDLE Event,
65                                                      PIO_APC_ROUTINE ApcRoutine,
66                                                      PVOID ApcContext,
67                                                      PIO_STATUS_BLOCK IoStatusBlock,
68                                                      PVOID FileInformation,
69                                                      ULONG Length,
70                                                      FILE_INFORMATION_CLASS FileInformationClass,
71                                                      BOOLEAN ReturnSingleEntry,
72                                                      PUNICODE_STRING FileName,
73                                                      BOOLEAN RestartScan);
74
75 extern NTSTATUS (WINAPI *func_NtQueryVolumeInformationFile) (HANDLE FileHandle,
76                                                              PIO_STATUS_BLOCK IoStatusBlock,
77                                                              PVOID FsInformation,
78                                                              ULONG Length,
79                                                              FS_INFORMATION_CLASS FsInformationClass);
80
81
82 extern NTSTATUS (WINAPI *func_NtSetSecurityObject)(HANDLE Handle,
83                                                    SECURITY_INFORMATION SecurityInformation,
84                                                    PSECURITY_DESCRIPTOR SecurityDescriptor);
85
86 extern NTSTATUS (WINAPI *func_NtClose) (HANDLE Handle);
87
88 extern DWORD (WINAPI *func_RtlNtStatusToDosError)(NTSTATUS status);
89
90 extern NTSTATUS (WINAPI *func_RtlCreateSystemVolumeInformationFolder)
91                         (PCUNICODE_STRING VolumeRootPath);
92
93
94 extern bool
95 windows_version_is_at_least(unsigned major, unsigned minor);
96
97 #define running_on_windows_xp_or_later() \
98                         windows_version_is_at_least(5, 1)
99
100 #define running_on_windows_vista_or_later() \
101                         windows_version_is_at_least(6, 0)
102
103 #define running_on_windows_7_or_later() \
104                         windows_version_is_at_least(6, 1)
105
106
107
108 #endif /* _WIMLIB_WIN32_COMMON_H */