system_win32.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #ifndef HEADER_CURL_SYSTEM_WIN32_H
  2. #define HEADER_CURL_SYSTEM_WIN32_H
  3. /***************************************************************************
  4. * _ _ ____ _
  5. * Project ___| | | | _ \| |
  6. * / __| | | | |_) | |
  7. * | (__| |_| | _ <| |___
  8. * \___|\___/|_| \_\_____|
  9. *
  10. * Copyright (C) Steve Holme, <steve_holme@hotmail.com>.
  11. *
  12. * This software is licensed as described in the file COPYING, which
  13. * you should have received as part of this distribution. The terms
  14. * are also available at https://curl.se/docs/copyright.html.
  15. *
  16. * You may opt to use, copy, modify, merge, publish, distribute and/or sell
  17. * copies of the Software, and permit persons to whom the Software is
  18. * furnished to do so, under the terms of the COPYING file.
  19. *
  20. * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  21. * KIND, either express or implied.
  22. *
  23. * SPDX-License-Identifier: curl
  24. *
  25. ***************************************************************************/
  26. #include "curl_setup.h"
  27. #ifdef _WIN32
  28. #include <curl/curl.h>
  29. extern LARGE_INTEGER Curl_freq;
  30. extern bool Curl_isVistaOrGreater;
  31. extern bool Curl_isWindows8OrGreater;
  32. CURLcode Curl_win32_init(long flags);
  33. void Curl_win32_cleanup(long init_flags);
  34. /* We use our own typedef here since some headers might lack this */
  35. typedef unsigned int(WINAPI *IF_NAMETOINDEX_FN)(const char *);
  36. /* This is used instead of if_nametoindex if available on Windows */
  37. extern IF_NAMETOINDEX_FN Curl_if_nametoindex;
  38. /* Identical copy of addrinfoexW/ADDRINFOEXW */
  39. typedef struct addrinfoexW_
  40. {
  41. int ai_flags;
  42. int ai_family;
  43. int ai_socktype;
  44. int ai_protocol;
  45. size_t ai_addrlen;
  46. PWSTR ai_canonname;
  47. struct sockaddr *ai_addr;
  48. void *ai_blob;
  49. size_t ai_bloblen;
  50. LPGUID ai_provider;
  51. struct addrinfoexW_ *ai_next;
  52. } ADDRINFOEXW_;
  53. typedef void (CALLBACK *LOOKUP_COMPLETION_FN)(DWORD, DWORD, LPWSAOVERLAPPED);
  54. typedef void (WSAAPI *FREEADDRINFOEXW_FN)(ADDRINFOEXW_*);
  55. typedef int (WSAAPI *GETADDRINFOEXCANCEL_FN)(LPHANDLE);
  56. typedef int (WSAAPI *GETADDRINFOEXW_FN)(PCWSTR, PCWSTR, DWORD, LPGUID,
  57. const ADDRINFOEXW_*, ADDRINFOEXW_**, struct timeval*, LPOVERLAPPED,
  58. LOOKUP_COMPLETION_FN, LPHANDLE);
  59. extern FREEADDRINFOEXW_FN Curl_FreeAddrInfoExW;
  60. extern GETADDRINFOEXCANCEL_FN Curl_GetAddrInfoExCancel;
  61. extern GETADDRINFOEXW_FN Curl_GetAddrInfoExW;
  62. bool Curl_win32_impersonating(void);
  63. /* This is used to dynamically load DLLs */
  64. HMODULE Curl_load_library(LPCTSTR filename);
  65. #else /* _WIN32 */
  66. #define Curl_win32_init(x) CURLE_OK
  67. #endif /* !_WIN32 */
  68. #endif /* HEADER_CURL_SYSTEM_WIN32_H */