diff options
author | Moonchild <moonchild@palemoon.org> | 2021-09-30 02:11:33 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2022-04-01 14:38:31 +0200 |
commit | a7b63631b0e84c9a5ab1ef266f8f5e26c0f62d6a (patch) | |
tree | 521fbd6d7c6b866fbc8d58aa538af14312a57667 | |
parent | cdff23ad0b3e0be2121c77a5b2415b15c7c4f0b2 (diff) | |
download | uxp-a7b63631b0e84c9a5ab1ef266f8f5e26c0f62d6a.tar.gz |
No issue - Clean up some obsolete/archaic code paths.
-rw-r--r-- | ipc/mscom/ProxyStream.cpp | 8 | ||||
-rw-r--r-- | layout/generic/nsContainerFrame.cpp | 6 | ||||
-rw-r--r-- | media/webrtc/trunk/webrtc/base/cpumonitor.cc | 1 | ||||
-rw-r--r-- | media/webrtc/trunk/webrtc/base/nethelpers.cc | 40 | ||||
-rw-r--r-- | media/webrtc/trunk/webrtc/base/systeminfo.cc | 1 | ||||
-rw-r--r-- | media/webrtc/trunk/webrtc/modules/audio_device/win/audio_device_utility_win.cc | 72 | ||||
-rw-r--r-- | media/webrtc/trunk/webrtc/modules/desktop_capture/win/screen_capturer_win_gdi.cc | 5 | ||||
-rw-r--r-- | mozglue/misc/StackWalk.cpp | 13 | ||||
-rw-r--r-- | netwerk/system/win32/nsNotifyAddrListener.cpp | 5 | ||||
-rw-r--r-- | netwerk/wifi/win_wifiScanner.cpp | 4 | ||||
-rw-r--r-- | netwerk/wifi/win_wlanLibrary.cpp | 5 | ||||
-rw-r--r-- | security/nss/coreconf/WIN32.mk | 9 | ||||
-rw-r--r-- | toolkit/xre/nsAppRunner.cpp | 12 | ||||
-rw-r--r-- | widget/GfxInfoX11.cpp | 1 | ||||
-rw-r--r-- | widget/gtk/gtkdrawing.h | 3 | ||||
-rw-r--r-- | widget/windows/nsWindow.cpp | 4 | ||||
-rw-r--r-- | xpcom/base/nsSystemInfo.cpp | 1 | ||||
-rw-r--r-- | xpcom/io/nsLocalFileWin.cpp | 3 | ||||
-rw-r--r-- | xpcom/reflect/xptcall/md/win32/xptcstubs_x86_64.cpp | 2 |
19 files changed, 26 insertions, 169 deletions
diff --git a/ipc/mscom/ProxyStream.cpp b/ipc/mscom/ProxyStream.cpp index 5b72a2e7a7..8004906e8f 100644 --- a/ipc/mscom/ProxyStream.cpp +++ b/ipc/mscom/ProxyStream.cpp @@ -73,13 +73,7 @@ ProxyStream::ProxyStream(const BYTE* aInitBuf, const int aInitBufSize) already_AddRefed<IStream> ProxyStream::InitStream(const BYTE* aInitBuf, const UINT aInitBufSize) { - // Need to link to this as ordinal 12 for Windows XP - static DynamicallyLinkedFunctionPtr<decltype(&::SHCreateMemStream)> - pSHCreateMemStream(L"shlwapi.dll", reinterpret_cast<const char*>(12)); - if (!pSHCreateMemStream) { - return nullptr; - } - return already_AddRefed<IStream>(pSHCreateMemStream(aInitBuf, aInitBufSize)); + return already_AddRefed<IStream>(::SHCreateMemStream(aInitBuf, aInitBufSize)); } ProxyStream::ProxyStream(ProxyStream&& aOther) diff --git a/layout/generic/nsContainerFrame.cpp b/layout/generic/nsContainerFrame.cpp index 47afed9de1..45c28c6107 100644 --- a/layout/generic/nsContainerFrame.cpp +++ b/layout/generic/nsContainerFrame.cpp @@ -669,9 +669,9 @@ nsContainerFrame::SyncWindowProperties(nsPresContext* aPresContext, Element* rootElement = aPresContext->Document()->GetRootElement(); if (!rootElement || !rootElement->IsXULElement()) { // Scrollframes use native widgets which don't work well with - // translucent windows, at least in Windows XP. So if the document - // has a root scrollrame it's useless to try to make it transparent, - // we'll just get something broken. + // translucent windows. + // So if the document has a root scrollrame it's useless to try to + // make it transparent, we'll just get something broken. // nsCSSFrameConstructor::ConstructRootFrame constructs root // scrollframes whenever the root element is not a XUL element, so // we test for that here. We can't just call diff --git a/media/webrtc/trunk/webrtc/base/cpumonitor.cc b/media/webrtc/trunk/webrtc/base/cpumonitor.cc index c881b48c5a..20aea554f2 100644 --- a/media/webrtc/trunk/webrtc/base/cpumonitor.cc +++ b/media/webrtc/trunk/webrtc/base/cpumonitor.cc @@ -107,7 +107,6 @@ bool CpuSampler::Init() { return false; } #if defined(WEBRTC_WIN) - // Note that GetSystemTimes is available in Windows XP SP1 or later. // http://msdn.microsoft.com/en-us/library/ms724400.aspx // NtQuerySystemInformation is used as a fallback. if (!force_fallback_) { diff --git a/media/webrtc/trunk/webrtc/base/nethelpers.cc b/media/webrtc/trunk/webrtc/base/nethelpers.cc index 0c7cce6b7c..f8150939fd 100644 --- a/media/webrtc/trunk/webrtc/base/nethelpers.cc +++ b/media/webrtc/trunk/webrtc/base/nethelpers.cc @@ -116,45 +116,7 @@ int inet_pton(int af, const char* src, void *dst) { } bool HasIPv6Enabled() { -#if !defined(WEBRTC_WIN) - // We only need to check this for Windows XP (so far). + // All supported OSes have IPv6. return true; -#else - if (IsWindowsVistaOrLater()) { - return true; - } - if (!IsWindowsXpOrLater()) { - return false; - } - DWORD protbuff_size = 4096; - scoped_ptr<char[]> protocols; - LPWSAPROTOCOL_INFOW protocol_infos = NULL; - int requested_protocols[2] = {AF_INET6, 0}; - - int err = 0; - int ret = 0; - // Check for protocols in a do-while loop until we provide a buffer large - // enough. (WSCEnumProtocols sets protbuff_size to its desired value). - // It is extremely unlikely that this will loop more than once. - do { - protocols.reset(new char[protbuff_size]); - protocol_infos = reinterpret_cast<LPWSAPROTOCOL_INFOW>(protocols.get()); - ret = WSCEnumProtocols(requested_protocols, protocol_infos, - &protbuff_size, &err); - } while (ret == SOCKET_ERROR && err == WSAENOBUFS); - - if (ret == SOCKET_ERROR) { - return false; - } - - // Even if ret is positive, check specifically for IPv6. - // Non-IPv6 enabled WinXP will still return a RAW protocol. - for (int i = 0; i < ret; ++i) { - if (protocol_infos[i].iAddressFamily == AF_INET6) { - return true; - } - } - return false; -#endif } } // namespace rtc diff --git a/media/webrtc/trunk/webrtc/base/systeminfo.cc b/media/webrtc/trunk/webrtc/base/systeminfo.cc index 6d8d5ba751..4d9b819613 100644 --- a/media/webrtc/trunk/webrtc/base/systeminfo.cc +++ b/media/webrtc/trunk/webrtc/base/systeminfo.cc @@ -47,7 +47,6 @@ typedef BOOL (WINAPI *LPFN_GLPI)( PDWORD); static void GetProcessorInformation(int* physical_cpus, int* cache_size) { - // GetLogicalProcessorInformation() is available on Windows XP SP3 and beyond. LPFN_GLPI glpi = reinterpret_cast<LPFN_GLPI>(GetProcAddress( GetModuleHandle(L"kernel32"), "GetLogicalProcessorInformation")); diff --git a/media/webrtc/trunk/webrtc/modules/audio_device/win/audio_device_utility_win.cc b/media/webrtc/trunk/webrtc/modules/audio_device/win/audio_device_utility_win.cc index 9cfd6bea6c..4ee434d94b 100644 --- a/media/webrtc/trunk/webrtc/modules/audio_device/win/audio_device_utility_win.cc +++ b/media/webrtc/trunk/webrtc/modules/audio_device/win/audio_device_utility_win.cc @@ -115,33 +115,8 @@ BOOL AudioDeviceUtilityWindows::GetOSDisplayString(LPTSTR pszOS) { StringCchCopy(pszOS, STRING_MAX_SIZE, TEXT("Microsoft ")); - // Test for the specific product - // - // Operating system Version number - // -------------------------------------- - // Windows 7 6.1 - // Windows Server 2008 R2 6.1 - // Windows Server 2008 6.0 - // Windows Vista 6.0 - // - - - - - - - - - - - - - - - - - - - - // Windows Server 2003 R2 5.2 - // Windows Server 2003 5.2 - // Windows XP 5.1 - // Windows 2000 5.0 - // - // see http://msdn.microsoft.com/en-us/library/ms724832(VS.85).aspx for details - // if (osvi.dwMajorVersion == 6) { - if (osvi.dwMinorVersion == 0) - { - // Windows Vista or Server 2008 - if (osvi.wProductType == VER_NT_WORKSTATION) - StringCchCat(pszOS, STRING_MAX_SIZE, TEXT("Windows Vista ")); - else - StringCchCat(pszOS, STRING_MAX_SIZE, TEXT("Windows Server 2008 " )); - } - if (osvi.dwMinorVersion == 1) { // Windows 7 or Server 2008 R2 @@ -152,38 +127,6 @@ BOOL AudioDeviceUtilityWindows::GetOSDisplayString(LPTSTR pszOS) } } - if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2) - { - StringCchCat(pszOS, STRING_MAX_SIZE, TEXT("Windows Server 2003")); - } - - if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1) - { - StringCchCat(pszOS, STRING_MAX_SIZE, TEXT("Windows XP ")); - if (osvi.wSuiteMask & VER_SUITE_PERSONAL) - StringCchCat(pszOS, STRING_MAX_SIZE, TEXT( "Home Edition" )); - else - StringCchCat(pszOS, STRING_MAX_SIZE, TEXT( "Professional" )); - } - - if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0) - { - StringCchCat(pszOS, STRING_MAX_SIZE, TEXT("Windows 2000 ")); - - if (osvi.wProductType == VER_NT_WORKSTATION ) - { - StringCchCat(pszOS, STRING_MAX_SIZE, TEXT( "Professional" )); - } - else - { - if (osvi.wSuiteMask & VER_SUITE_DATACENTER) - StringCchCat(pszOS, STRING_MAX_SIZE, TEXT( "Datacenter Server" )); - else if (osvi.wSuiteMask & VER_SUITE_ENTERPRISE) - StringCchCat(pszOS, STRING_MAX_SIZE, TEXT( "Advanced Server" )); - else StringCchCat(pszOS, STRING_MAX_SIZE, TEXT( "Server" )); - } - } - // Include service pack (if any) // if (_tcslen(osvi.szCSDVersion) > 0) @@ -207,16 +150,13 @@ BOOL AudioDeviceUtilityWindows::GetOSDisplayString(LPTSTR pszOS) else GetSystemInfo(&si); - // Add 64-bit or 32-bit for OS versions "later than" Vista + // Add 64-bit or 32-bit // - if (osvi.dwMajorVersion >= 6) - { - if ((si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) || - (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64)) - StringCchCat(pszOS, STRING_MAX_SIZE, TEXT( ", 64-bit" )); - else if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL ) - StringCchCat(pszOS, STRING_MAX_SIZE, TEXT(", 32-bit")); - } + if ((si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) || + (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64)) + StringCchCat(pszOS, STRING_MAX_SIZE, TEXT( ", 64-bit" )); + else if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL ) + StringCchCat(pszOS, STRING_MAX_SIZE, TEXT(", 32-bit")); return TRUE; } diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/win/screen_capturer_win_gdi.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/win/screen_capturer_win_gdi.cc index 756bdcb3cd..81caa38e3f 100644 --- a/media/webrtc/trunk/webrtc/modules/desktop_capture/win/screen_capturer_win_gdi.cc +++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/win/screen_capturer_win_gdi.cc @@ -279,12 +279,9 @@ bool ScreenCapturerWinGdi::CaptureImage() { BOOL enabled; (*composition_enabled_func_)(&enabled); if (!enabled) { - // Vista or Windows 7, Aero disabled + // Aero disabled rop |= CAPTUREBLT; } - } else { - // Windows XP, required to get layered windows - rop |= CAPTUREBLT; } if (previous_object != NULL) { BitBlt(memory_dc_, diff --git a/mozglue/misc/StackWalk.cpp b/mozglue/misc/StackWalk.cpp index e24d76d03f..8b50ddc347 100644 --- a/mozglue/misc/StackWalk.cpp +++ b/mozglue/misc/StackWalk.cpp @@ -588,20 +588,7 @@ callbackEspecial64( * This code rectifies that problem. */ -// New members were added to IMAGEHLP_MODULE64 (that show up in the -// Platform SDK that ships with VC8, but not the Platform SDK that ships -// with VC7.1, i.e., between DbgHelp 6.0 and 6.1), but we don't need to -// use them, and it's useful to be able to function correctly with the -// older library. (Stock Windows XP SP2 seems to ship with dbghelp.dll -// version 5.1.) Since Platform SDK version need not correspond to -// compiler version, and the version number in debughlp.h was NOT bumped -// when these changes were made, ifdef based on a constant that was -// added between these versions. -#ifdef SSRVOPT_SETCONTEXT #define NS_IMAGEHLP_MODULE64_SIZE (((offsetof(IMAGEHLP_MODULE64, LoadedPdbName) + sizeof(DWORD64) - 1) / sizeof(DWORD64)) * sizeof(DWORD64)) -#else -#define NS_IMAGEHLP_MODULE64_SIZE sizeof(IMAGEHLP_MODULE64) -#endif BOOL SymGetModuleInfoEspecial64(HANDLE aProcess, DWORD64 aAddr, PIMAGEHLP_MODULE64 aModuleInfo, diff --git a/netwerk/system/win32/nsNotifyAddrListener.cpp b/netwerk/system/win32/nsNotifyAddrListener.cpp index 58f4345ef8..3216a24909 100644 --- a/netwerk/system/win32/nsNotifyAddrListener.cpp +++ b/netwerk/system/win32/nsNotifyAddrListener.cpp @@ -1,13 +1,8 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:set et sw=4 ts=4: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -// We define this to make our use of inet_ntoa() pass. The "proper" function -// inet_ntop() doesn't exist on Windows XP. -#define _WINSOCK_DEPRECATED_NO_WARNINGS - #include <stdarg.h> #include <windef.h> #include <winbase.h> diff --git a/netwerk/wifi/win_wifiScanner.cpp b/netwerk/wifi/win_wifiScanner.cpp index a462b96969..2d88b6f83f 100644 --- a/netwerk/wifi/win_wifiScanner.cpp +++ b/netwerk/wifi/win_wifiScanner.cpp @@ -70,10 +70,6 @@ WinWifiScanner::WinWifiScanner() { // NOTE: We assume that, if we were unable to load the WLAN library when // we initially tried, we will not be able to load it in the future. - // Technically, on Windows XP SP2, a user could install the redistributable - // and make our assumption incorrect. We opt to avoid making a bunch of - // spurious LoadLibrary calls in the common case rather than load the - // WLAN API in the edge case. mWlanLibrary = WinWLANLibrary::Load(); if (!mWlanLibrary) { NS_WARNING("Could not initialize Windows Wi-Fi scanner"); diff --git a/netwerk/wifi/win_wlanLibrary.cpp b/netwerk/wifi/win_wlanLibrary.cpp index cf1052788a..1ccb8e0e1f 100644 --- a/netwerk/wifi/win_wlanLibrary.cpp +++ b/netwerk/wifi/win_wlanLibrary.cpp @@ -127,10 +127,7 @@ WinWLANLibrary::Initialize() // Get the handle to the WLAN API. DWORD negotiated_version; - // We could be executing on either Windows XP or Windows Vista, so use the - // lower version of the client WLAN API. It seems that the negotiated version - // is the Vista version irrespective of what we pass! - static const int kXpWlanClientVersion = 1; + static const int kXpWlanClientVersion = 2; if (ERROR_SUCCESS != (*mWlanOpenHandlePtr)(kXpWlanClientVersion, nullptr, diff --git a/security/nss/coreconf/WIN32.mk b/security/nss/coreconf/WIN32.mk index ac1a454bce..5c28062c00 100644 --- a/security/nss/coreconf/WIN32.mk +++ b/security/nss/coreconf/WIN32.mk @@ -4,8 +4,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. # -# Configuration common to all versions of Windows NT -# and Windows 95 +# Configuration common to all versions of Windows # DEFAULT_COMPILER = cl @@ -208,9 +207,8 @@ endif ifeq (,$(filter-out x386 x86_64,$(CPU_ARCH))) ifdef USE_64 DEFINES += -D_AMD64_ - # Use subsystem 5.02 to allow running on Windows XP. ifeq ($(_MSC_VER_GE_11),1) - LDFLAGS += -SUBSYSTEM:CONSOLE,5.02 + LDFLAGS += -SUBSYSTEM:CONSOLE,6.01 endif CPU_ARCH = x86_64 else @@ -218,12 +216,11 @@ else # VS2012 defaults to -arch:SSE2. Use -arch:IA32 to avoid requiring # SSE2. Clang-cl gets confused by -arch:IA32, so don't add it. # (See https://llvm.org/bugs/show_bug.cgi?id=24335) - # Use subsystem 5.01 to allow running on Windows XP. ifeq ($(_MSC_VER_GE_11),1) ifneq ($(CLANG_CL),1) OS_CFLAGS += -arch:IA32 endif - LDFLAGS += -SUBSYSTEM:CONSOLE,5.01 + LDFLAGS += -SUBSYSTEM:CONSOLE,6.01 endif CPU_ARCH = x386 endif diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp index ce5da9cdac..4affd760c5 100644 --- a/toolkit/xre/nsAppRunner.cpp +++ b/toolkit/xre/nsAppRunner.cpp @@ -4173,17 +4173,15 @@ void SetupErrorHandling(const char* progname) { #ifdef XP_WIN - /* On Windows XPSP3 and Windows Vista if DEP is configured off-by-default - we still want DEP protection: enable it explicitly and programmatically. - - This function is not available on WinXPSP2 so we dynamically load it. - */ - HMODULE kernel32 = GetModuleHandleW(L"kernel32.dll"); SetProcessDEPPolicyFunc _SetProcessDEPPolicy = (SetProcessDEPPolicyFunc) GetProcAddress(kernel32, "SetProcessDEPPolicy"); - if (_SetProcessDEPPolicy) + if (_SetProcessDEPPolicy) { _SetProcessDEPPolicy(PROCESS_DEP_ENABLE); + } else { + // Running without DEP is unsafe. + MOZ_CRASH("DEP unavailable -- unsupported configuration"); + } #endif #ifdef XP_WIN32 diff --git a/widget/GfxInfoX11.cpp b/widget/GfxInfoX11.cpp index af374dc44a..9a5065eb65 100644 --- a/widget/GfxInfoX11.cpp +++ b/widget/GfxInfoX11.cpp @@ -321,7 +321,6 @@ GfxInfo::GetFeatureStatusImpl(int32_t aFeature, // this is necessary as they're still using the slightly outdated 190.42 driver. // this isn't a huge risk, as at least this is the exact setting in which we do continuous testing, // and this only affects GeForce 9400 cards on linux on this precise driver version, which is very few users. - // We do the same thing on Windows XP, see in widget/windows/GfxInfo.cpp if (mIsNVIDIA && !strcmp(mRenderer.get(), "GeForce 9400/PCI/SSE2") && !strcmp(mVersion.get(), "3.2.0 NVIDIA 190.42")) diff --git a/widget/gtk/gtkdrawing.h b/widget/gtk/gtkdrawing.h index 7db5db043a..8ad456911c 100644 --- a/widget/gtk/gtkdrawing.h +++ b/widget/gtk/gtkdrawing.h @@ -8,8 +8,7 @@ * * gtkdrawing provides an API for rendering GTK widgets in the * current theme to a pixmap or window, without requiring an actual - * widget instantiation, similar to the Macintosh Appearance Manager - * or Windows XP's DrawThemeBackground() API. + * widget instantiation. */ #ifndef _GTK_DRAWING_H_ diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp index b9c3ea1548..1a18b9ecaf 100644 --- a/widget/windows/nsWindow.cpp +++ b/widget/windows/nsWindow.cpp @@ -903,8 +903,8 @@ nsWindow::Create(nsIWidget* aParent, SubclassWindow(TRUE); - // Starting with Windows XP, a process always runs within a terminal services - // session. In order to play nicely with RDP, fast user switching, and the + // A process always runs within a terminal services session. + // In order to play nicely with RDP, fast user switching, and the // lock screen, we should be handling WM_WTSSESSION_CHANGE. We must register // our HWND in order to receive this message. DebugOnly<BOOL> wtsRegistered = ::WTSRegisterSessionNotification(mWnd, diff --git a/xpcom/base/nsSystemInfo.cpp b/xpcom/base/nsSystemInfo.cpp index 027d36f10d..df106e4e05 100644 --- a/xpcom/base/nsSystemInfo.cpp +++ b/xpcom/base/nsSystemInfo.cpp @@ -263,7 +263,6 @@ GetProcessorInformation(int* physical_cpus, int* cache_size_L2, int* cache_size_ *cache_size_L2 = 0; // This will be in kbytes *cache_size_L3 = 0; // This will be in kbytes - // GetLogicalProcessorInformation() is available on Windows XP SP3 and beyond. LPFN_GLPI glpi = reinterpret_cast<LPFN_GLPI>(GetProcAddress( GetModuleHandle(L"kernel32"), "GetLogicalProcessorInformation")); diff --git a/xpcom/io/nsLocalFileWin.cpp b/xpcom/io/nsLocalFileWin.cpp index 4960ac07e6..2ff05666b1 100644 --- a/xpcom/io/nsLocalFileWin.cpp +++ b/xpcom/io/nsLocalFileWin.cpp @@ -1630,8 +1630,7 @@ nsLocalFile::Normalize() // "..." remove from path (any number of dots > 2) // // The last form is something that Windows 95 and 98 supported and - // is a shortcut for changing up multiple directories. Windows XP - // and ilk ignore it in a path, as is done here. + // is a shortcut for changing up multiple directories. We ignore this form. int32_t len, begin, end = rootIdx; while (end < (int32_t)path.Length()) { // find the current segment (text between the backslashes) to diff --git a/xpcom/reflect/xptcall/md/win32/xptcstubs_x86_64.cpp b/xpcom/reflect/xptcall/md/win32/xptcstubs_x86_64.cpp index 8ff479d1e7..2ba099c8a5 100644 --- a/xpcom/reflect/xptcall/md/win32/xptcstubs_x86_64.cpp +++ b/xpcom/reflect/xptcall/md/win32/xptcstubs_x86_64.cpp @@ -9,7 +9,7 @@ #include "xptiprivate.h" /* - * This is for Windows XP 64-Bit Edition / Server 2003 for AMD64 or later. + * This is for Windows 64-Bit. */ extern "C" nsresult |