X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fwin32_common.c;h=484afea6061eda610f8093687a1a3a0fa8fa7aa6;hb=8f2b2ae78181c9ba6b107df623c514cadce602bb;hp=2610c59aace053457115e44ea67526bba37966da;hpb=fcc8d33acee4c9ab11ebe975da030c6e53b182e3;p=wimlib diff --git a/src/win32_common.c b/src/win32_common.c index 2610c59a..484afea6 100644 --- a/src/win32_common.c +++ b/src/win32_common.c @@ -619,8 +619,20 @@ HANDLE (WINAPI *win32func_FindFirstStreamW)(LPCWSTR lpFileName, BOOL (WINAPI *win32func_FindNextStreamW)(HANDLE hFindStream, LPVOID lpFindStreamData) = NULL; +static OSVERSIONINFO windows_version_info = { + .dwOSVersionInfoSize = sizeof(OSVERSIONINFO), +}; + static HMODULE hKernel32 = NULL; +bool +windows_version_is_at_least(unsigned major, unsigned minor) +{ + return windows_version_info.dwMajorVersion > major || + (windows_version_info.dwMajorVersion == major && + windows_version_info.dwMinorVersion >= minor); +} + /* Try to dynamically load some functions */ void win32_global_init() @@ -634,25 +646,21 @@ win32_global_init() err = GetLastError(); WARNING("Can't load Kernel32.dll"); win32_error(err); - return; } } - DEBUG("Looking for FindFirstStreamW"); - win32func_FindFirstStreamW = (void*)GetProcAddress(hKernel32, "FindFirstStreamW"); - if (!win32func_FindFirstStreamW) { - WARNING("Could not find function FindFirstStreamW() in Kernel32.dll!"); - WARNING("Capturing alternate data streams will not be supported."); - return; + if (hKernel32) { + win32func_FindFirstStreamW = (void*)GetProcAddress(hKernel32, + "FindFirstStreamW"); + if (win32func_FindFirstStreamW) { + win32func_FindNextStreamW = (void*)GetProcAddress(hKernel32, + "FindNextStreamW"); + if (!win32func_FindNextStreamW) + win32func_FindFirstStreamW = NULL; + } } - DEBUG("Looking for FindNextStreamW"); - win32func_FindNextStreamW = (void*)GetProcAddress(hKernel32, "FindNextStreamW"); - if (!win32func_FindNextStreamW) { - WARNING("Could not find function FindNextStreamW() in Kernel32.dll!"); - WARNING("Capturing alternate data streams will not be supported."); - win32func_FindFirstStreamW = NULL; - } + GetVersionEx(&windows_version_info); } void