2 * win32_common.h - common header for Windows-specific files. This always
3 * should be included first.
6 #ifndef _WIMLIB_WIN32_COMMON_H
7 #define _WIMLIB_WIN32_COMMON_H
16 #include "wimlib/types.h"
17 #include "wimlib/win32.h"
21 extern NTSTATUS (WINAPI *func_NtCreateFile)(PHANDLE FileHandle,
22 ACCESS_MASK DesiredAccess,
23 POBJECT_ATTRIBUTES ObjectAttributes,
24 PIO_STATUS_BLOCK IoStatusBlock,
25 PLARGE_INTEGER AllocationSize,
28 ULONG CreateDisposition,
34 # define FILE_OPENED 0x00000001
37 extern NTSTATUS (WINAPI *func_NtOpenFile) (PHANDLE FileHandle,
38 ACCESS_MASK DesiredAccess,
39 POBJECT_ATTRIBUTES ObjectAttributes,
40 PIO_STATUS_BLOCK IoStatusBlock,
44 extern NTSTATUS (WINAPI *func_NtReadFile) (HANDLE FileHandle,
46 PIO_APC_ROUTINE ApcRoutine,
48 PIO_STATUS_BLOCK IoStatusBlock,
51 PLARGE_INTEGER ByteOffset,
54 extern NTSTATUS (WINAPI *func_NtWriteFile) (HANDLE FileHandle,
56 PIO_APC_ROUTINE ApcRoutine,
58 PIO_STATUS_BLOCK IoStatusBlock,
61 PLARGE_INTEGER ByteOffset,
64 extern NTSTATUS (WINAPI *func_NtQueryInformationFile)(HANDLE FileHandle,
65 PIO_STATUS_BLOCK IoStatusBlock,
66 PVOID FileInformation,
68 FILE_INFORMATION_CLASS FileInformationClass);
70 extern NTSTATUS (WINAPI *func_NtQuerySecurityObject)(HANDLE handle,
71 SECURITY_INFORMATION SecurityInformation,
72 PSECURITY_DESCRIPTOR SecurityDescriptor,
76 extern NTSTATUS (WINAPI *func_NtQueryDirectoryFile) (HANDLE FileHandle,
78 PIO_APC_ROUTINE ApcRoutine,
80 PIO_STATUS_BLOCK IoStatusBlock,
81 PVOID FileInformation,
83 FILE_INFORMATION_CLASS FileInformationClass,
84 BOOLEAN ReturnSingleEntry,
85 PUNICODE_STRING FileName,
88 extern NTSTATUS (WINAPI *func_NtQueryVolumeInformationFile) (HANDLE FileHandle,
89 PIO_STATUS_BLOCK IoStatusBlock,
92 FS_INFORMATION_CLASS FsInformationClass);
94 extern NTSTATUS (WINAPI *func_NtSetInformationFile)(HANDLE FileHandle,
95 PIO_STATUS_BLOCK IoStatusBlock,
96 PVOID FileInformation,
98 FILE_INFORMATION_CLASS FileInformationClass);
100 extern NTSTATUS (WINAPI *func_NtSetSecurityObject)(HANDLE Handle,
101 SECURITY_INFORMATION SecurityInformation,
102 PSECURITY_DESCRIPTOR SecurityDescriptor);
104 extern NTSTATUS (WINAPI *func_NtFsControlFile) (HANDLE FileHandle,
106 PIO_APC_ROUTINE ApcRoutine,
108 PIO_STATUS_BLOCK IoStatusBlock,
111 ULONG InputBufferLength,
113 ULONG OutputBufferLength);
115 extern NTSTATUS (WINAPI *func_NtClose) (HANDLE Handle);
117 extern DWORD (WINAPI *func_RtlNtStatusToDosError)(NTSTATUS status);
119 typedef struct _RTLP_CURDIR_REF {
122 } RTLP_CURDIR_REF, *PRTLP_CURDIR_REF;
124 typedef struct _RTL_RELATIVE_NAME_U {
125 UNICODE_STRING RelativeName;
126 HANDLE ContainingDirectory;
127 PRTLP_CURDIR_REF CurDirRef;
128 } RTL_RELATIVE_NAME_U, *PRTL_RELATIVE_NAME_U;
130 extern BOOLEAN (WINAPI *func_RtlDosPathNameToNtPathName_U)
132 OUT PUNICODE_STRING NtName,
133 OUT PCWSTR *PartName,
134 OUT PRTL_RELATIVE_NAME_U RelativeName);
136 extern NTSTATUS (WINAPI *func_RtlDosPathNameToNtPathName_U_WithStatus)
138 OUT PUNICODE_STRING NtName,
139 OUT PCWSTR *PartName,
140 OUT PRTL_RELATIVE_NAME_U RelativeName);
142 extern NTSTATUS (WINAPI *func_RtlCreateSystemVolumeInformationFolder)
143 (PCUNICODE_STRING VolumeRootPath);
145 #define FSCTL_SET_PERSISTENT_VOLUME_STATE 0x90238
147 #define PERSISTENT_VOLUME_STATE_SHORT_NAME_CREATION_DISABLED 0x00000001
149 typedef struct _FILE_FS_PERSISTENT_VOLUME_INFORMATION {
154 } FILE_FS_PERSISTENT_VOLUME_INFORMATION, *PFILE_FS_PERSISTENT_VOLUME_INFORMATION;
157 win32_path_to_nt_path(const wchar_t *win32_path, UNICODE_STRING *nt_path);
160 win32_get_drive_path(const wchar_t *file_path, wchar_t drive_path[7]);
163 win32_try_to_attach_wof(const wchar_t *drive);
166 win32_warning(DWORD err, const wchar_t *format, ...) _cold_attribute;
169 win32_error(DWORD err, const wchar_t *format, ...) _cold_attribute;
172 winnt_warning(NTSTATUS status, const wchar_t *format, ...) _cold_attribute;
175 winnt_error(NTSTATUS status, const wchar_t *format, ...) _cold_attribute;
177 #endif /* _WIMLIB_WIN32_COMMON_H */