X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=include%2Fwimlib%2Fwin32_common.h;h=9b873550ec69fe0b4bd378c399d4c00bbeba9585;hb=151463861a212a1ae7deae7e9844cd0cd1c4343c;hp=d9a4ff30cc68487635b91af15f10f62a4027d204;hpb=cc7b6ee47d4037ae8fa11b4c2d5154091d543704;p=wimlib diff --git a/include/wimlib/win32_common.h b/include/wimlib/win32_common.h index d9a4ff30..9b873550 100644 --- a/include/wimlib/win32_common.h +++ b/include/wimlib/win32_common.h @@ -1,26 +1,16 @@ #ifndef _WIMLIB_WIN32_COMMON_H #define _WIMLIB_WIN32_COMMON_H +#include #include +#include + #ifdef ERROR # undef ERROR #endif - #include "wimlib/types.h" #include "wimlib/win32.h" -#include -#include - -extern void -set_errno_from_GetLastError(void); - -extern void -set_errno_from_win32_error(DWORD err); - -extern void -set_errno_from_nt_status(NTSTATUS status); - /* ntdll functions */ extern NTSTATUS (WINAPI *func_NtCreateFile)(PHANDLE FileHandle, @@ -35,6 +25,10 @@ extern NTSTATUS (WINAPI *func_NtCreateFile)(PHANDLE FileHandle, PVOID EaBuffer, ULONG EaLength); +#ifndef FILE_OPENED +# define FILE_OPENED 0x00000001 +#endif + extern NTSTATUS (WINAPI *func_NtOpenFile) (PHANDLE FileHandle, ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes, @@ -128,6 +122,12 @@ typedef struct _RTL_RELATIVE_NAME_U { PRTLP_CURDIR_REF CurDirRef; } RTL_RELATIVE_NAME_U, *PRTL_RELATIVE_NAME_U; +extern BOOLEAN (WINAPI *func_RtlDosPathNameToNtPathName_U) + (IN PCWSTR DosName, + OUT PUNICODE_STRING NtName, + OUT PCWSTR *PartName, + OUT PRTL_RELATIVE_NAME_U RelativeName); + extern NTSTATUS (WINAPI *func_RtlDosPathNameToNtPathName_U_WithStatus) (IN PCWSTR DosName, OUT PUNICODE_STRING NtName, @@ -137,19 +137,33 @@ extern NTSTATUS (WINAPI *func_RtlDosPathNameToNtPathName_U_WithStatus) extern NTSTATUS (WINAPI *func_RtlCreateSystemVolumeInformationFolder) (PCUNICODE_STRING VolumeRootPath); +#define FSCTL_SET_PERSISTENT_VOLUME_STATE 0x90238 -extern bool -windows_version_is_at_least(unsigned major, unsigned minor); +#define PERSISTENT_VOLUME_STATE_SHORT_NAME_CREATION_DISABLED 0x00000001 -#define running_on_windows_xp_or_later() \ - windows_version_is_at_least(5, 1) +typedef struct _FILE_FS_PERSISTENT_VOLUME_INFORMATION { + ULONG VolumeFlags; + ULONG FlagMask; + ULONG Version; + ULONG Reserved; +} FILE_FS_PERSISTENT_VOLUME_INFORMATION, *PFILE_FS_PERSISTENT_VOLUME_INFORMATION; -#define running_on_windows_vista_or_later() \ - windows_version_is_at_least(6, 0) +extern int +win32_path_to_nt_path(const wchar_t *win32_path, UNICODE_STRING *nt_path); -#define running_on_windows_7_or_later() \ - windows_version_is_at_least(6, 1) +extern int +win32_get_drive_path(const wchar_t *file_path, wchar_t drive_path[7]); +extern void +win32_warning(DWORD err, const wchar_t *format, ...) _cold_attribute; + +extern void +win32_error(DWORD err, const wchar_t *format, ...) _cold_attribute; +extern void +winnt_warning(NTSTATUS status, const wchar_t *format, ...) _cold_attribute; + +extern void +winnt_error(NTSTATUS status, const wchar_t *format, ...) _cold_attribute; #endif /* _WIMLIB_WIN32_COMMON_H */