diff options
author | Denis Shienkov <denis.shienkov@gmail.com> | 2015-12-09 22:52:11 +0300 |
---|---|---|
committer | Denis Shienkov <denis.shienkov@gmail.com> | 2015-12-10 10:36:15 +0000 |
commit | d0da1f79fd8e7215cab9bc927d96c817827ddb41 (patch) | |
tree | 72c330aa25cf118438a6b5697808bde4c375c7a3 /src | |
parent | a1a98f1cffedd23fed9f0a29cd297fc255af1978 (diff) | |
download | qtserialport-d0da1f79fd8e7215cab9bc927d96c817827ddb41.tar.gz |
Use the C-style array of GUID tokens
... because use QPair and QList it is an overhead.
Change-Id: I9ed90f9301ab1fed194890e925c9124e86d3c7dc
Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com>
Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/serialport/qserialportinfo_win.cpp | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/src/serialport/qserialportinfo_win.cpp b/src/serialport/qserialportinfo_win.cpp index 123b066..8a47e22 100644 --- a/src/serialport/qserialportinfo_win.cpp +++ b/src/serialport/qserialportinfo_win.cpp @@ -57,18 +57,6 @@ QT_BEGIN_NAMESPACE -typedef QPair<QUuid, DWORD> GuidFlagsPair; - -static inline const QList<GuidFlagsPair>& guidFlagsPairs() -{ - static const QList<GuidFlagsPair> guidFlagsPairList = QList<GuidFlagsPair>() - << 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; -} - static QStringList portNamesFromHardwareDeviceMap() { HKEY hKey = Q_NULLPTR; @@ -287,10 +275,21 @@ static QString deviceSerialNumber(const QString &instanceIdentifier, QList<QSerialPortInfo> QSerialPortInfo::availablePorts() { + static const struct { + GUID guid; DWORD flags; + } setupTokens[] = { + { GUID_DEVCLASS_PORTS, DIGCF_PRESENT }, + { GUID_DEVCLASS_MODEM, DIGCF_PRESENT }, + { GUID_DEVINTERFACE_COMPORT, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE }, + { GUID_DEVINTERFACE_MODEM, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE } + }; + + static const int setupTokensCount = sizeof(setupTokens) / sizeof(setupTokens[0]); + QList<QSerialPortInfo> serialPortInfoList; - foreach (const GuidFlagsPair &uniquePair, guidFlagsPairs()) { - const HDEVINFO deviceInfoSet = ::SetupDiGetClassDevs(reinterpret_cast<const GUID *>(&uniquePair.first), Q_NULLPTR, Q_NULLPTR, uniquePair.second); + for (int i = 0; i < setupTokensCount; ++i) { + const HDEVINFO deviceInfoSet = ::SetupDiGetClassDevs(&setupTokens[i].guid, Q_NULLPTR, Q_NULLPTR, setupTokens[i].flags); if (deviceInfoSet == INVALID_HANDLE_VALUE) return serialPortInfoList; |