From a1a98f1cffedd23fed9f0a29cd297fc255af1978 Mon Sep 17 00:00:00 2001 From: Denis Shienkov Date: Wed, 9 Dec 2015 22:28:03 +0300 Subject: Use pre-defined class/interface devices GUIDs Also is added the test for verification of presence of ntddmodm.h file, which contains GUID_DEVINTERFACE_MODEM definition. In case the compiler has not this file, we define GUID_DEVINTERFACE_MODEM himself. Change-Id: I471f76f8eabd2a200702a0970aa538c780208e18 Reviewed-by: Sergey Belyashov Reviewed-by: Denis Shienkov --- config.tests/ntddmodm/main.cpp | 41 ++++++++++++++++++++++++++++++++++ config.tests/ntddmodm/ntddmodm.pro | 4 ++++ qtserialport.pro | 3 +++ src/serialport/qserialportinfo_win.cpp | 20 ++++++++++------- src/serialport/serialport.pro | 2 ++ 5 files changed, 62 insertions(+), 8 deletions(-) create mode 100644 config.tests/ntddmodm/main.cpp create mode 100644 config.tests/ntddmodm/ntddmodm.pro diff --git a/config.tests/ntddmodm/main.cpp b/config.tests/ntddmodm/main.cpp new file mode 100644 index 0000000..4bcb97f --- /dev/null +++ b/config.tests/ntddmodm/main.cpp @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Denis Shienkov +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtSerialPort module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include + +int main(int, char**) +{ + GUID guid = GUID_DEVINTERFACE_MODEM; + return 0; +} diff --git a/config.tests/ntddmodm/ntddmodm.pro b/config.tests/ntddmodm/ntddmodm.pro new file mode 100644 index 0000000..abb9ba8 --- /dev/null +++ b/config.tests/ntddmodm/ntddmodm.pro @@ -0,0 +1,4 @@ +CONFIG -= qt +CONFIG += console + +SOURCES += main.cpp diff --git a/qtserialport.pro b/qtserialport.pro index b8e7231..95eb99b 100644 --- a/qtserialport.pro +++ b/qtserialport.pro @@ -6,4 +6,7 @@ lessThan(QT_MAJOR_VERSION, 5) { requires(!winrt) requires(!ios) +load(configure) +qtCompileTest(ntddmodm) + load(qt_parts) diff --git a/src/serialport/qserialportinfo_win.cpp b/src/serialport/qserialportinfo_win.cpp index 06987f2..123b066 100644 --- a/src/serialport/qserialportinfo_win.cpp +++ b/src/serialport/qserialportinfo_win.cpp @@ -44,9 +44,17 @@ #include #include +#include // for GUID_DEVCLASS_PORTS and GUID_DEVCLASS_MODEM +#include // for GUID_DEVINTERFACE_COMPORT #include #include +#ifdef QT_NO_REDEFINE_GUID_DEVINTERFACE_MODEM +# include // for GUID_DEVINTERFACE_MODEM +#else + DEFINE_GUID(GUID_DEVINTERFACE_MODEM, 0x2c7089aa, 0x2e0e, 0x11d1, 0xb1, 0x14, 0x00, 0xc0, 0x4f, 0xc2, 0xaa, 0xe4); +#endif + QT_BEGIN_NAMESPACE typedef QPair GuidFlagsPair; @@ -54,14 +62,10 @@ typedef QPair GuidFlagsPair; static inline const QList& guidFlagsPairs() { static const QList guidFlagsPairList = QList() - // Standard Setup Ports Class GUID - << qMakePair(QUuid(0x4D36E978, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18), DWORD(DIGCF_PRESENT)) - // Standard Setup Modems Class GUID - << qMakePair(QUuid(0x4D36E96D, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18), DWORD(DIGCF_PRESENT)) - // Standard Serial Port Device Interface Class GUID - << qMakePair(QUuid(0x86E0D1E0, 0x8089, 0x11D0, 0x9C, 0xE4, 0x08, 0x00, 0x3E, 0x30, 0x1F, 0x73), DWORD(DIGCF_PRESENT | DIGCF_DEVICEINTERFACE)) - // Standard Modem Device Interface Class GUID - << qMakePair(QUuid(0x2C7089AA, 0x2E0E, 0x11D1, 0xB1, 0x14, 0x00, 0xC0, 0x4F, 0xC2, 0xAA, 0xE4), DWORD(DIGCF_PRESENT | DIGCF_DEVICEINTERFACE)); + << qMakePair(QUuid(GUID_DEVCLASS_PORTS), DWORD(DIGCF_PRESENT)) + << qMakePair(QUuid(GUID_DEVCLASS_MODEM), DWORD(DIGCF_PRESENT)) + << qMakePair(QUuid(GUID_DEVINTERFACE_COMPORT), DWORD(DIGCF_PRESENT | DIGCF_DEVICEINTERFACE)) + << qMakePair(QUuid(GUID_DEVINTERFACE_MODEM), DWORD(DIGCF_PRESENT | DIGCF_DEVICEINTERFACE)); return guidFlagsPairList; } diff --git a/src/serialport/serialport.pro b/src/serialport/serialport.pro index 40c0339..92d0795 100644 --- a/src/serialport/serialport.pro +++ b/src/serialport/serialport.pro @@ -3,6 +3,8 @@ QT = core-private QMAKE_DOCS = $$PWD/doc/qtserialport.qdocconf +config_ntddmodm: DEFINES += QT_NO_REDEFINE_GUID_DEVINTERFACE_MODEM + load(qt_module) include($$PWD/serialport-lib.pri) -- cgit v1.2.1