1 #ifndef _WIMLIB_WIN32_COMMON_H
2 #define _WIMLIB_WIN32_COMMON_H
11 #include "wimlib/types.h"
12 #include "wimlib/win32.h"
16 extern NTSTATUS (WINAPI *func_NtCreateFile)(PHANDLE FileHandle,
17 ACCESS_MASK DesiredAccess,
18 POBJECT_ATTRIBUTES ObjectAttributes,
19 PIO_STATUS_BLOCK IoStatusBlock,
20 PLARGE_INTEGER AllocationSize,
23 ULONG CreateDisposition,
28 extern NTSTATUS (WINAPI *func_NtOpenFile) (PHANDLE FileHandle,
29 ACCESS_MASK DesiredAccess,
30 POBJECT_ATTRIBUTES ObjectAttributes,
31 PIO_STATUS_BLOCK IoStatusBlock,
35 extern NTSTATUS (WINAPI *func_NtReadFile) (HANDLE FileHandle,
37 PIO_APC_ROUTINE ApcRoutine,
39 PIO_STATUS_BLOCK IoStatusBlock,
42 PLARGE_INTEGER ByteOffset,
45 extern NTSTATUS (WINAPI *func_NtWriteFile) (HANDLE FileHandle,
47 PIO_APC_ROUTINE ApcRoutine,
49 PIO_STATUS_BLOCK IoStatusBlock,
52 PLARGE_INTEGER ByteOffset,
55 extern NTSTATUS (WINAPI *func_NtQueryInformationFile)(HANDLE FileHandle,
56 PIO_STATUS_BLOCK IoStatusBlock,
57 PVOID FileInformation,
59 FILE_INFORMATION_CLASS FileInformationClass);
61 extern NTSTATUS (WINAPI *func_NtQuerySecurityObject)(HANDLE handle,
62 SECURITY_INFORMATION SecurityInformation,
63 PSECURITY_DESCRIPTOR SecurityDescriptor,
67 extern NTSTATUS (WINAPI *func_NtQueryDirectoryFile) (HANDLE FileHandle,
69 PIO_APC_ROUTINE ApcRoutine,
71 PIO_STATUS_BLOCK IoStatusBlock,
72 PVOID FileInformation,
74 FILE_INFORMATION_CLASS FileInformationClass,
75 BOOLEAN ReturnSingleEntry,
76 PUNICODE_STRING FileName,
79 extern NTSTATUS (WINAPI *func_NtQueryVolumeInformationFile) (HANDLE FileHandle,
80 PIO_STATUS_BLOCK IoStatusBlock,
83 FS_INFORMATION_CLASS FsInformationClass);
85 extern NTSTATUS (WINAPI *func_NtSetInformationFile)(HANDLE FileHandle,
86 PIO_STATUS_BLOCK IoStatusBlock,
87 PVOID FileInformation,
89 FILE_INFORMATION_CLASS FileInformationClass);
91 extern NTSTATUS (WINAPI *func_NtSetSecurityObject)(HANDLE Handle,
92 SECURITY_INFORMATION SecurityInformation,
93 PSECURITY_DESCRIPTOR SecurityDescriptor);
95 extern NTSTATUS (WINAPI *func_NtFsControlFile) (HANDLE FileHandle,
97 PIO_APC_ROUTINE ApcRoutine,
99 PIO_STATUS_BLOCK IoStatusBlock,
102 ULONG InputBufferLength,
104 ULONG OutputBufferLength);
106 extern NTSTATUS (WINAPI *func_NtClose) (HANDLE Handle);
108 extern DWORD (WINAPI *func_RtlNtStatusToDosError)(NTSTATUS status);
110 typedef struct _RTLP_CURDIR_REF {
113 } RTLP_CURDIR_REF, *PRTLP_CURDIR_REF;
115 typedef struct _RTL_RELATIVE_NAME_U {
116 UNICODE_STRING RelativeName;
117 HANDLE ContainingDirectory;
118 PRTLP_CURDIR_REF CurDirRef;
119 } RTL_RELATIVE_NAME_U, *PRTL_RELATIVE_NAME_U;
121 extern BOOLEAN (WINAPI *func_RtlDosPathNameToNtPathName_U)
123 OUT PUNICODE_STRING NtName,
124 OUT PCWSTR *PartName,
125 OUT PRTL_RELATIVE_NAME_U RelativeName);
127 extern NTSTATUS (WINAPI *func_RtlDosPathNameToNtPathName_U_WithStatus)
129 OUT PUNICODE_STRING NtName,
130 OUT PCWSTR *PartName,
131 OUT PRTL_RELATIVE_NAME_U RelativeName);
133 extern NTSTATUS (WINAPI *func_RtlCreateSystemVolumeInformationFolder)
134 (PCUNICODE_STRING VolumeRootPath);
136 #define FSCTL_SET_PERSISTENT_VOLUME_STATE 0x90238
138 #define PERSISTENT_VOLUME_STATE_SHORT_NAME_CREATION_DISABLED 0x00000001
140 typedef struct _FILE_FS_PERSISTENT_VOLUME_INFORMATION {
145 } FILE_FS_PERSISTENT_VOLUME_INFORMATION, *PFILE_FS_PERSISTENT_VOLUME_INFORMATION;
148 win32_path_to_nt_path(const wchar_t *win32_path, UNICODE_STRING *nt_path);
151 win32_get_drive_path(const wchar_t *file_path, wchar_t drive_path[7]);
154 win32_warning(DWORD err, const wchar_t *format, ...) _cold_attribute;
157 win32_error(DWORD err, const wchar_t *format, ...) _cold_attribute;
160 winnt_warning(NTSTATUS status, const wchar_t *format, ...) _cold_attribute;
163 winnt_error(NTSTATUS status, const wchar_t *format, ...) _cold_attribute;
165 #endif /* _WIMLIB_WIN32_COMMON_H */