1 /* Hey EMACS -*- win32-c -*- */
2 /* $Id$ */
3 
4 /*  libticables2 - link cable library, a part of the TiLP project
5  *  Copyright (C) 1999-2005  Romain Lievin
6  *
7  *  This program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation; either version 2 of the License, or
10  *  (at your option) any later version.
11  *
12  *  This program is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License
18  *  along with this program; if not, write to the Free Software Foundation,
19  *  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 /* Win32 probing module */
23 
24 #include <windows.h>
25 
26 #include "../error.h"
27 #include "../logging.h"
28 #include "detect.h"
29 
30 #include "../win32/dha.h"
31 #include "../win64/rwp.h"
32 
33 #include "../win32/usb.h"
34 
35 #ifdef __MINGW32__
36 #include "../win32/dha.c"
37 #include "../win64/rwp.c"
38 #endif
39 
40 // Note: the kernel version of XP x64 is 5.2, like Windows 2003, not 5.1 as
41 // Windows XP 32-Bit.
42 
win32_check_os(void)43 int win32_check_os(void)
44 {
45 	OSVERSIONINFO os;
46 	SYSTEM_INFO si;
47 
48 	GetSystemInfo(&si);	// should use GetNativeSystemInfo(&si); & si.wProcessorArchitecture but MSVC too old
49 	if(si.dwProcessorType > 586)
50 		return WIN_64;
51 
52   	memset(&os, 0, sizeof(OSVERSIONINFO));
53   	os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
54   	GetVersionEx(&os);
55 
56   	if (os.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
57 		return WIN_9X;
58   	else if (os.dwPlatformId == VER_PLATFORM_WIN32_NT)
59 		return WIN_NT;
60   	else
61 		return WIN_NT;
62 
63 	return 0;
64 }
65 
win32_check_dha(void)66 int win32_check_dha(void)
67 {
68 #ifndef _WIN64
69 	int result = 0;
70 
71 	dha_detect(&result);
72 
73 	return result ? 0 : ERR_DHA_NOT_FOUND;
74 #else
75 	return 0;
76 #endif
77 }
78 
win32_check_rwp(void)79 int win32_check_rwp(void)
80 {
81 #ifdef _WIN64
82 	int result = 0;
83 
84 	rwp_detect(&result);
85 
86 	return result ? 0: ERR_RWP_NOT_FOUND;
87 #else
88 	return 0;
89 #endif
90 }
91 
win32_check_libusb(void)92 int win32_check_libusb(void)
93 {
94 	if(usb_get_version() != NULL)
95 		return 0;
96 	else
97 		return ERR_LIBUSBWIN32_NOT_PRESENT;
98 }
99