+++ /dev/null
-/*
- * Windows backend common header for libusb 1.0
- *
- * This file brings together header code common between
- * the desktop Windows and Windows CE backends.
- * Copyright © 2012-2013 RealVNC Ltd.
- * Copyright © 2009-2012 Pete Batard <pete@akeo.ie>
- * With contributions from Michael Plante, Orin Eman et al.
- * Parts of this code adapted from libusb-win32-v1 by Stephan Meyer
- * Major code testing contribution by Xiaofan Chen
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#pragma once
-
-// Windows API default is uppercase - ugh!
-#if !defined(bool)
-#define bool BOOL
-#endif
-#if !defined(true)
-#define true TRUE
-#endif
-#if !defined(false)
-#define false FALSE
-#endif
-
-#define EPOCH_TIME UINT64_C(116444736000000000) // 1970.01.01 00:00:000 in MS Filetime
-
-#if defined(__CYGWIN__ )
-#define _stricmp strcasecmp
-#define _strdup strdup
-// _beginthreadex is MSVCRT => unavailable for cygwin. Fallback to using CreateThread
-#define _beginthreadex(a, b, c, d, e, f) CreateThread(a, b, (LPTHREAD_START_ROUTINE)c, d, e, (LPDWORD)f)
-#endif
-
-#define safe_free(p) do {if (p != NULL) {free((void *)p); p = NULL;}} while (0)
-
-#ifndef ARRAYSIZE
-#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0]))
-#endif
-
-#define ERR_BUFFER_SIZE 256
-
-/*
- * API macros - leveraged from libusb-win32 1.x
- */
-#ifndef _WIN32_WCE
-#define DLL_STRINGIFY(s) #s
-#define DLL_LOAD_LIBRARY(name) LoadLibraryA(DLL_STRINGIFY(name))
-#else
-#define DLL_STRINGIFY(s) L#s
-#define DLL_LOAD_LIBRARY(name) LoadLibrary(DLL_STRINGIFY(name))
-#endif
-
-/*
- * Macros for handling DLL themselves
- */
-#define DLL_HANDLE_NAME(name) __dll_##name##_handle
-
-#define DLL_DECLARE_HANDLE(name) \
- static HMODULE DLL_HANDLE_NAME(name) = NULL
-
-#define DLL_GET_HANDLE(name) \
- do { \
- DLL_HANDLE_NAME(name) = DLL_LOAD_LIBRARY(name); \
- if (!DLL_HANDLE_NAME(name)) \
- return FALSE; \
- } while (0)
-
-#define DLL_FREE_HANDLE(name) \
- do { \
- if (DLL_HANDLE_NAME(name)) { \
- FreeLibrary(DLL_HANDLE_NAME(name)); \
- DLL_HANDLE_NAME(name) = NULL; \
- } \
- } while (0)
-
-
-/*
- * Macros for handling functions within a DLL
- */
-#define DLL_FUNC_NAME(name) __dll_##name##_func_t
-
-#define DLL_DECLARE_FUNC_PREFIXNAME(api, ret, prefixname, name, args) \
- typedef ret (api * DLL_FUNC_NAME(name))args; \
- static DLL_FUNC_NAME(name) prefixname = NULL
-
-#define DLL_DECLARE_FUNC(api, ret, name, args) \
- DLL_DECLARE_FUNC_PREFIXNAME(api, ret, name, name, args)
-#define DLL_DECLARE_FUNC_PREFIXED(api, ret, prefix, name, args) \
- DLL_DECLARE_FUNC_PREFIXNAME(api, ret, prefix##name, name, args)
-
-#define DLL_LOAD_FUNC_PREFIXNAME(dll, prefixname, name, ret_on_failure) \
- do { \
- HMODULE h = DLL_HANDLE_NAME(dll); \
- prefixname = (DLL_FUNC_NAME(name))GetProcAddress(h, \
- DLL_STRINGIFY(name)); \
- if (prefixname) \
- break; \
- prefixname = (DLL_FUNC_NAME(name))GetProcAddress(h, \
- DLL_STRINGIFY(name) DLL_STRINGIFY(A)); \
- if (prefixname) \
- break; \
- prefixname = (DLL_FUNC_NAME(name))GetProcAddress(h, \
- DLL_STRINGIFY(name) DLL_STRINGIFY(W)); \
- if (prefixname) \
- break; \
- if (ret_on_failure) \
- return FALSE; \
- } while (0)
-
-#define DLL_LOAD_FUNC(dll, name, ret_on_failure) \
- DLL_LOAD_FUNC_PREFIXNAME(dll, name, name, ret_on_failure)
-#define DLL_LOAD_FUNC_PREFIXED(dll, prefix, name, ret_on_failure) \
- DLL_LOAD_FUNC_PREFIXNAME(dll, prefix##name, name, ret_on_failure)