1 #ifndef _WIMLIB_WIN32_COMMON_H
2 #define _WIMLIB_WIN32_COMMON_H
11 #include "wimlib/types.h"
12 #include "wimlib/win32.h"
15 set_errno_from_GetLastError(void);
18 set_errno_from_win32_error(DWORD err);
22 extern NTSTATUS (WINAPI *func_NtCreateFile)(PHANDLE FileHandle,
23 ACCESS_MASK DesiredAccess,
24 POBJECT_ATTRIBUTES ObjectAttributes,
25 PIO_STATUS_BLOCK IoStatusBlock,
26 PLARGE_INTEGER AllocationSize,
29 ULONG CreateDisposition,
34 extern NTSTATUS (WINAPI *func_NtOpenFile) (PHANDLE FileHandle,
35 ACCESS_MASK DesiredAccess,
36 POBJECT_ATTRIBUTES ObjectAttributes,
37 PIO_STATUS_BLOCK IoStatusBlock,
41 extern NTSTATUS (WINAPI *func_NtReadFile) (HANDLE FileHandle,
43 PIO_APC_ROUTINE ApcRoutine,
45 PIO_STATUS_BLOCK IoStatusBlock,
48 PLARGE_INTEGER ByteOffset,
51 extern NTSTATUS (WINAPI *func_NtWriteFile) (HANDLE FileHandle,
53 PIO_APC_ROUTINE ApcRoutine,
55 PIO_STATUS_BLOCK IoStatusBlock,
58 PLARGE_INTEGER ByteOffset,
61 extern NTSTATUS (WINAPI *func_NtQueryInformationFile)(HANDLE FileHandle,
62 PIO_STATUS_BLOCK IoStatusBlock,
63 PVOID FileInformation,
65 FILE_INFORMATION_CLASS FileInformationClass);
67 extern NTSTATUS (WINAPI *func_NtQuerySecurityObject)(HANDLE handle,
68 SECURITY_INFORMATION SecurityInformation,
69 PSECURITY_DESCRIPTOR SecurityDescriptor,
73 extern NTSTATUS (WINAPI *func_NtQueryDirectoryFile) (HANDLE FileHandle,
75 PIO_APC_ROUTINE ApcRoutine,
77 PIO_STATUS_BLOCK IoStatusBlock,
78 PVOID FileInformation,
80 FILE_INFORMATION_CLASS FileInformationClass,
81 BOOLEAN ReturnSingleEntry,
82 PUNICODE_STRING FileName,
85 extern NTSTATUS (WINAPI *func_NtQueryVolumeInformationFile) (HANDLE FileHandle,
86 PIO_STATUS_BLOCK IoStatusBlock,
89 FS_INFORMATION_CLASS FsInformationClass);
91 extern NTSTATUS (WINAPI *func_NtSetInformationFile)(HANDLE FileHandle,
92 PIO_STATUS_BLOCK IoStatusBlock,
93 PVOID FileInformation,
95 FILE_INFORMATION_CLASS FileInformationClass);
97 extern NTSTATUS (WINAPI *func_NtSetSecurityObject)(HANDLE Handle,
98 SECURITY_INFORMATION SecurityInformation,
99 PSECURITY_DESCRIPTOR SecurityDescriptor);
101 extern NTSTATUS (WINAPI *func_NtFsControlFile) (HANDLE FileHandle,
103 PIO_APC_ROUTINE ApcRoutine,
105 PIO_STATUS_BLOCK IoStatusBlock,
108 ULONG InputBufferLength,
110 ULONG OutputBufferLength);
112 extern NTSTATUS (WINAPI *func_NtClose) (HANDLE Handle);
114 extern DWORD (WINAPI *func_RtlNtStatusToDosError)(NTSTATUS status);
116 typedef struct _RTLP_CURDIR_REF {
119 } RTLP_CURDIR_REF, *PRTLP_CURDIR_REF;
121 typedef struct _RTL_RELATIVE_NAME_U {
122 UNICODE_STRING RelativeName;
123 HANDLE ContainingDirectory;
124 PRTLP_CURDIR_REF CurDirRef;
125 } RTL_RELATIVE_NAME_U, *PRTL_RELATIVE_NAME_U;
127 extern BOOLEAN (WINAPI *func_RtlDosPathNameToNtPathName_U)
129 OUT PUNICODE_STRING NtName,
130 OUT PCWSTR *PartName,
131 OUT PRTL_RELATIVE_NAME_U RelativeName);
133 extern NTSTATUS (WINAPI *func_RtlDosPathNameToNtPathName_U_WithStatus)
135 OUT PUNICODE_STRING NtName,
136 OUT PCWSTR *PartName,
137 OUT PRTL_RELATIVE_NAME_U RelativeName);
139 extern NTSTATUS (WINAPI *func_RtlCreateSystemVolumeInformationFolder)
140 (PCUNICODE_STRING VolumeRootPath);
142 #define FSCTL_SET_PERSISTENT_VOLUME_STATE 0x90238
144 #define PERSISTENT_VOLUME_STATE_SHORT_NAME_CREATION_DISABLED 0x00000001
146 typedef struct _FILE_FS_PERSISTENT_VOLUME_INFORMATION {
151 } FILE_FS_PERSISTENT_VOLUME_INFORMATION, *PFILE_FS_PERSISTENT_VOLUME_INFORMATION;
154 win32_path_to_nt_path(const wchar_t *win32_path, UNICODE_STRING *nt_path);
157 win32_get_drive_path(const wchar_t *file_path, wchar_t drive_path[7]);
160 win32_warning(DWORD err, const wchar_t *format, ...) _cold_attribute;
163 win32_error(DWORD err, const wchar_t *format, ...) _cold_attribute;
166 winnt_warning(NTSTATUS status, const wchar_t *format, ...) _cold_attribute;
169 winnt_error(NTSTATUS status, const wchar_t *format, ...) _cold_attribute;
171 #endif /* _WIMLIB_WIN32_COMMON_H */