diff options
Diffstat (limited to 'host/windows/usb/api/adb_interface_enum.cpp')
-rw-r--r-- | host/windows/usb/api/adb_interface_enum.cpp | 206 |
1 files changed, 103 insertions, 103 deletions
diff --git a/host/windows/usb/api/adb_interface_enum.cpp b/host/windows/usb/api/adb_interface_enum.cpp index 6e2808cc8..094cd3ea7 100644 --- a/host/windows/usb/api/adb_interface_enum.cpp +++ b/host/windows/usb/api/adb_interface_enum.cpp @@ -1,103 +1,103 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** \file - This file consists of implementation of AdbInterfaceEnumObject class that - encapsulates enumerator of USB interfaces available through this API. -*/ - -#include "stdafx.h" -#include "adb_api.h" -#include "adb_interface_enum.h" -#include "adb_helper_routines.h" - -AdbInterfaceEnumObject::AdbInterfaceEnumObject() - : AdbObjectHandle(AdbObjectTypeInterfaceEnumerator) { - current_interface_ = interfaces_.begin(); -} - -AdbInterfaceEnumObject::~AdbInterfaceEnumObject() { -} - -bool AdbInterfaceEnumObject::InitializeEnum(GUID class_id, - bool exclude_not_present, - bool exclude_removed, - bool active_only) { - // Calc flags for SetupDiGetClassDevs - DWORD flags = DIGCF_DEVICEINTERFACE; - if (exclude_not_present) - flags |= DIGCF_PRESENT; - - // Do the enum - bool ret = EnumerateDeviceInterfaces(class_id, - flags, - exclude_removed, - active_only, - &interfaces_); - - // If enum was successfull set current enum pointer - // to the beginning of the array - if (ret) - current_interface_ = interfaces_.begin(); - - return ret; -} - -bool AdbInterfaceEnumObject::Next(AdbInterfaceInfo* info, ULONG* size) { - // Make sure that it's opened - if (!IsOpened()) { - SetLastError(ERROR_INVALID_HANDLE); - return false; - } - - ATLASSERT(NULL != size); - if (NULL == size) { - SetLastError(ERROR_INVALID_PARAMETER); - return false; - } - - // Lets see if enum is over - if (interfaces_.end() == current_interface_) { - SetLastError(ERROR_NO_MORE_ITEMS); - return false; - } - - AdbInstanceEnumEntry& entry = *current_interface_; - - // Big enough? - if ((NULL == info) || (*size < entry.GetFlatSize())) { - *size = entry.GetFlatSize(); - SetLastError(ERROR_INSUFFICIENT_BUFFER); - return false; - } - - // All checks passed - entry.Save(info); - current_interface_++; - return true; -} - -bool AdbInterfaceEnumObject::Reset() { - // Make sure that it's opened - if (!IsOpened()) { - SetLastError(ERROR_INVALID_HANDLE); - return false; - } - - current_interface_ = interfaces_.begin(); - - return true; -} +/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/** \file
+ This file consists of implementation of AdbInterfaceEnumObject class that
+ encapsulates enumerator of USB interfaces available through this API.
+*/
+
+#include "stdafx.h"
+#include "adb_api.h"
+#include "adb_interface_enum.h"
+#include "adb_helper_routines.h"
+
+AdbInterfaceEnumObject::AdbInterfaceEnumObject()
+ : AdbObjectHandle(AdbObjectTypeInterfaceEnumerator) {
+ current_interface_ = interfaces_.begin();
+}
+
+AdbInterfaceEnumObject::~AdbInterfaceEnumObject() {
+}
+
+bool AdbInterfaceEnumObject::InitializeEnum(GUID class_id,
+ bool exclude_not_present,
+ bool exclude_removed,
+ bool active_only) {
+ // Calc flags for SetupDiGetClassDevs
+ DWORD flags = DIGCF_DEVICEINTERFACE;
+ if (exclude_not_present)
+ flags |= DIGCF_PRESENT;
+
+ // Do the enum
+ bool ret = EnumerateDeviceInterfaces(class_id,
+ flags,
+ exclude_removed,
+ active_only,
+ &interfaces_);
+
+ // If enum was successfull set current enum pointer
+ // to the beginning of the array
+ if (ret)
+ current_interface_ = interfaces_.begin();
+
+ return ret;
+}
+
+bool AdbInterfaceEnumObject::Next(AdbInterfaceInfo* info, ULONG* size) {
+ // Make sure that it's opened
+ if (!IsOpened()) {
+ SetLastError(ERROR_INVALID_HANDLE);
+ return false;
+ }
+
+ ATLASSERT(NULL != size);
+ if (NULL == size) {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return false;
+ }
+
+ // Lets see if enum is over
+ if (interfaces_.end() == current_interface_) {
+ SetLastError(ERROR_NO_MORE_ITEMS);
+ return false;
+ }
+
+ AdbInstanceEnumEntry& entry = *current_interface_;
+
+ // Big enough?
+ if ((NULL == info) || (*size < entry.GetFlatSize())) {
+ *size = entry.GetFlatSize();
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ return false;
+ }
+
+ // All checks passed
+ entry.Save(info);
+ current_interface_++;
+ return true;
+}
+
+bool AdbInterfaceEnumObject::Reset() {
+ // Make sure that it's opened
+ if (!IsOpened()) {
+ SetLastError(ERROR_INVALID_HANDLE);
+ return false;
+ }
+
+ current_interface_ = interfaces_.begin();
+
+ return true;
+}
|