OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifndef NET_BASE_NET_UTIL_WIN_H_ |
| 6 #define NET_BASE_NET_UTIL_WIN_H_ |
| 7 |
| 8 // This file is only used to expose some of the internals |
| 9 // of net_util_win.cc to tests. |
| 10 |
| 11 #include <wlanapi.h> |
| 12 |
| 13 #include "base/win/scoped_handle.h" |
| 14 #include "net/base/net_export.h" |
| 15 |
| 16 namespace net { |
| 17 namespace internal { |
| 18 |
| 19 struct NET_EXPORT WlanApi { |
| 20 typedef DWORD (WINAPI *WlanOpenHandleFunc)( |
| 21 DWORD, VOID*, DWORD*, HANDLE*); |
| 22 typedef DWORD (WINAPI *WlanEnumInterfacesFunc)( |
| 23 HANDLE, VOID*, WLAN_INTERFACE_INFO_LIST**); |
| 24 typedef DWORD (WINAPI *WlanQueryInterfaceFunc)( |
| 25 HANDLE, const GUID*, WLAN_INTF_OPCODE, VOID*, DWORD*, VOID**, |
| 26 WLAN_OPCODE_VALUE_TYPE*); |
| 27 typedef DWORD (WINAPI *WlanSetInterfaceFunc)( |
| 28 HANDLE, const GUID*, WLAN_INTF_OPCODE, DWORD, const VOID*, VOID*); |
| 29 typedef VOID (WINAPI *WlanFreeMemoryFunc)(VOID*); |
| 30 typedef DWORD (WINAPI *WlanCloseHandleFunc)(HANDLE, VOID*); |
| 31 |
| 32 WlanApi(); |
| 33 static WlanApi& GetInstance(); |
| 34 |
| 35 template <typename T> |
| 36 DWORD OpenHandle(DWORD client_version, DWORD* cur_version, T* handle) const { |
| 37 HANDLE temp_handle; |
| 38 DWORD result = open_handle_func(client_version, NULL, cur_version, |
| 39 &temp_handle); |
| 40 if (result != ERROR_SUCCESS) |
| 41 return result; |
| 42 handle->Set(temp_handle); |
| 43 return ERROR_SUCCESS; |
| 44 } |
| 45 |
| 46 HMODULE module; |
| 47 WlanOpenHandleFunc open_handle_func; |
| 48 WlanEnumInterfacesFunc enum_interfaces_func; |
| 49 WlanQueryInterfaceFunc query_interface_func; |
| 50 WlanSetInterfaceFunc set_interface_func; |
| 51 WlanFreeMemoryFunc free_memory_func; |
| 52 WlanCloseHandleFunc close_handle_func; |
| 53 bool initialized; |
| 54 }; |
| 55 |
| 56 struct WlanApiHandleTraits { |
| 57 typedef HANDLE Handle; |
| 58 |
| 59 static bool CloseHandle(HANDLE handle) { |
| 60 return WlanApi::GetInstance().close_handle_func(handle, NULL) == |
| 61 ERROR_SUCCESS; |
| 62 } |
| 63 static bool IsHandleValid(HANDLE handle) { |
| 64 return base::win::HandleTraits::IsHandleValid(handle); |
| 65 } |
| 66 static HANDLE NullHandle() { |
| 67 return base::win::HandleTraits::NullHandle(); |
| 68 } |
| 69 }; |
| 70 |
| 71 typedef base::win::GenericScopedHandle< |
| 72 WlanApiHandleTraits, |
| 73 base::win::DummyVerifierTraits> WlanHandle; |
| 74 |
| 75 struct WlanApiDeleter { |
| 76 inline void operator()(void* ptr) const { |
| 77 WlanApi::GetInstance().free_memory_func(ptr); |
| 78 } |
| 79 }; |
| 80 |
| 81 } // namespace internal |
| 82 |
| 83 } // namespace net |
| 84 |
| 85 #endif // NET_BASE_NET_UTIL_WIN_H_ |
OLD | NEW |