mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-28 16:26:10 +03:00
41 lines
1.1 KiB
C++
41 lines
1.1 KiB
C++
|
// Copyright 2019 The Chromium Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
#include "base/win/hstring_compare.h"
|
||
|
|
||
|
#include <winstring.h>
|
||
|
|
||
|
#include "base/native_library.h"
|
||
|
#include "base/win/windows_version.h"
|
||
|
|
||
|
namespace base {
|
||
|
namespace win {
|
||
|
|
||
|
HRESULT HStringCompare(HSTRING string1, HSTRING string2, INT32* result) {
|
||
|
using CompareStringFunc = decltype(&::WindowsCompareStringOrdinal);
|
||
|
|
||
|
static const auto compare_string_func = []() -> CompareStringFunc {
|
||
|
if (GetVersion() < Version::WIN8)
|
||
|
return nullptr;
|
||
|
|
||
|
NativeLibraryLoadError load_error;
|
||
|
NativeLibrary combase_module =
|
||
|
PinSystemLibrary(FILE_PATH_LITERAL("combase.dll"), &load_error);
|
||
|
if (load_error.code)
|
||
|
return nullptr;
|
||
|
|
||
|
return reinterpret_cast<CompareStringFunc>(
|
||
|
GetFunctionPointerFromNativeLibrary(combase_module,
|
||
|
"WindowsCompareStringOrdinal"));
|
||
|
}();
|
||
|
|
||
|
if (!compare_string_func)
|
||
|
return E_FAIL;
|
||
|
|
||
|
return compare_string_func(string1, string2, result);
|
||
|
}
|
||
|
|
||
|
} // namespace win
|
||
|
} // namespace base
|