system_win32.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. extern LARGE_INTEGER Curl_freq;
  29. extern bool Curl_isVistaOrGreater;
  30. extern bool Curl_isWindows8OrGreater;
  31. CURLcode Curl_win32_init(long flags);
  32. void Curl_win32_cleanup(long init_flags);
  33. /* We use our own typedef here since some headers might lack this */
  34. typedef unsigned int(WINAPI *IF_NAMETOINDEX_FN)(const char *);
  35. /* This is used instead of if_nametoindex if available on Windows */
  36. extern IF_NAMETOINDEX_FN Curl_if_nametoindex;
  37. /* Identical copy of addrinfoexW/ADDRINFOEXW */
  38. typedef struct addrinfoexW_
  39. {
  40. int ai_flags;
  41. int ai_family;
  42. int ai_socktype;
  43. int ai_protocol;
  44. size_t ai_addrlen;
  45. PWSTR ai_canonname;
  46. struct sockaddr *ai_addr;
  47. void *ai_blob;
  48. size_t ai_bloblen;
  49. LPGUID ai_provider;
  50. struct addrinfoexW_ *ai_next;
  51. } ADDRINFOEXW_;
  52. typedef void (CALLBACK *LOOKUP_COMPLETION_FN)(DWORD, DWORD, LPWSAOVERLAPPED);
  53. typedef void (WSAAPI *FREEADDRINFOEXW_FN)(ADDRINFOEXW_*);
  54. typedef int (WSAAPI *GETADDRINFOEXCANCEL_FN)(LPHANDLE);
  55. typedef int (WSAAPI *GETADDRINFOEXW_FN)(PCWSTR, PCWSTR, DWORD, LPGUID,
  56. const ADDRINFOEXW_*, ADDRINFOEXW_**, struct timeval*, LPOVERLAPPED,
  57. LOOKUP_COMPLETION_FN, LPHANDLE);
  58. extern FREEADDRINFOEXW_FN Curl_FreeAddrInfoExW;
  59. extern GETADDRINFOEXCANCEL_FN Curl_GetAddrInfoExCancel;
  60. extern GETADDRINFOEXW_FN Curl_GetAddrInfoExW;
  61. /* This is used to dynamically load DLLs */
  62. HMODULE Curl_load_library(LPCTSTR filename);
  63. #else /* _WIN32 */
  64. #define Curl_win32_init(x) CURLE_OK
  65. #endif /* !_WIN32 */
  66. #endif /* HEADER_CURL_SYSTEM_WIN32_H */