summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2015-12-09 23:01:53 +0300
committerDenis Shienkov <denis.shienkov@gmail.com>2015-12-10 11:06:37 +0000
commitd7b5d78ecc1b4d9dc6859f273d46847b1f2fe36d (patch)
tree540017774789535a312f863b6148d8c878ecee88
parentd0da1f79fd8e7215cab9bc927d96c817827ddb41 (diff)
downloadqtserialport-d7b5d78ecc1b4d9dc6859f273d46847b1f2fe36d.tar.gz
Use C-style tokens array for query of device name from registry
... because QStringList it is an overhead in there. Change-Id: Ic5da6243348ee1a934ae2c91707de71fa7e96825 Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
-rw-r--r--src/serialport/qserialportinfo_win.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/serialport/qserialportinfo_win.cpp b/src/serialport/qserialportinfo_win.cpp
index 8a47e22..63cf642 100644
--- a/src/serialport/qserialportinfo_win.cpp
+++ b/src/serialport/qserialportinfo_win.cpp
@@ -147,17 +147,20 @@ static QString devicePortName(HDEVINFO deviceInfoSet, PSP_DEVINFO_DATA deviceInf
if (key == INVALID_HANDLE_VALUE)
return QString();
- static const QStringList portNameRegistryKeyList = QStringList()
- << QStringLiteral("PortName")
- << QStringLiteral("PortNumber");
+ static const wchar_t * const keyTokens[] = {
+ L"PortName\0",
+ L"PortNumber\0"
+ };
+
+ static const int keyTokensCount = sizeof(keyTokens) / sizeof(keyTokens[0]);
QString portName;
- foreach (const QString &portNameKey, portNameRegistryKeyList) {
+ for (int i = 0; i < keyTokensCount; ++i) {
DWORD dataType = 0;
std::vector<wchar_t> outputBuffer(MAX_PATH + 1, 0);
DWORD bytesRequired = MAX_PATH;
forever {
- const LONG ret = ::RegQueryValueEx(key, reinterpret_cast<const wchar_t *>(portNameKey.utf16()), Q_NULLPTR, &dataType,
+ const LONG ret = ::RegQueryValueEx(key, keyTokens[i], Q_NULLPTR, &dataType,
reinterpret_cast<PBYTE>(&outputBuffer[0]), &bytesRequired);
if (ret == ERROR_MORE_DATA) {
outputBuffer.resize(bytesRequired / sizeof(wchar_t) + 2, 0);