/* | |
* Copyright (C) 2009 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. | |
*/ | |
#ifndef ANDROID_USB_API_ADB_HELPER_ROUTINES_H__ | |
#define ANDROID_USB_API_ADB_HELPER_ROUTINES_H__ | |
/** \file | |
This file consists of declarations of helper routines used | |
in the API. | |
*/ | |
#include "adb_api_private_defines.h" | |
/** \brief Converts access type and share mode from our enum into | |
SDK - complient values. | |
@param[in] access_type Enumerated access type | |
@param[in] sharing_mode Enumerated share mode | |
@param[out] desired_access Will receive SDK - complient desired access | |
flags. This parameter can be NULL. | |
@param[out] desired_sharing Will receive SDK - complient share mode. | |
This parameter can be NULL. | |
@return True on success, false on failure, in which case GetLastError() | |
provides extended information about the error that occurred. | |
*/ | |
bool GetSDKComplientParam(AdbOpenAccessType access_type, | |
AdbOpenSharingMode sharing_mode, | |
ULONG* desired_access, | |
ULONG* desired_sharing); | |
/** \brief Given the hardware device information enumerates interfaces for | |
this device. | |
@param[in] hardware_dev_info A handle to hardware device information obtained | |
from PnP manager via SetupDiGetClassDevs() | |
@param[in] class_id Device class ID how it is specified by our USB driver. | |
@param[in] exclude_removed If true interfaces with SPINT_REMOVED flag set | |
will be not included in the enumeration. | |
@param[in] active_only If true only active interfaces (with flag | |
SPINT_ACTIVE set) will be included in the enumeration. | |
@param[out] interfaces Upon successfull completion will consist of array of | |
all interfaces found for this device (matching all filters). | |
@return True on success, false on failure, in which case GetLastError() | |
provides extended information about the error that occurred. | |
*/ | |
bool EnumerateDeviceInterfaces(HDEVINFO hardware_dev_info, | |
GUID class_id, | |
bool exclude_removed, | |
bool active_only, | |
AdbEnumInterfaceArray* interfaces); | |
/** \brief Enumerates all interfaces for our device class. | |
This routine uses SetupDiGetClassDevs to get our device info and calls | |
EnumerateDeviceInterfaces to perform the enumeration. | |
@param[in] class_id Device class ID how it is specified by our USB driver | |
@param[in] flags Flags to pass to SetupDiGetClassDevs to filter devices. See | |
SetupDiGetClassDevs() in SDK for more info on these flags. | |
@param[in] exclude_removed If true interfaces with SPINT_REMOVED flag set | |
will be not included in the enumeration. | |
@param[in] active_only If true only active interfaces (with flag | |
SPINT_ACTIVE set) will be included in the enumeration. | |
@param[out] interfaces Upon successfull completion will consist of array of | |
all interfaces found for this device (matching all filters). | |
@return True on success, false on failure, in which case GetLastError() | |
provides extended information about the error that occurred. | |
*/ | |
bool EnumerateDeviceInterfaces(GUID class_id, | |
ULONG flags, | |
bool exclude_removed, | |
bool active_only, | |
AdbEnumInterfaceArray* interfaces); | |
/** \brief Given the hardware device information and data gets data details. | |
Given the hardware_dev_info, representing a handle to the plug and | |
play information, and dev_info_data, representing a specific usb device, | |
gets detailed data about the device (interface). | |
@param[in] hardware_dev_info A handle to hardware device information obtained | |
from PnP manager via SetupDiGetClassDevs() | |
@param[in] dev_info_data Device information data obtained via call to | |
SetupDiEnumDeviceInterfaces() | |
@param[out] dev_info_detail_data Upon successfull completion will consist of | |
the detailed data about device interface. This routine always | |
allocates memory for the output structure so content of this pointer | |
doesn't matter and will be overwritten by this routine. The caller | |
of this method is responsible for freeing allocated data using free() | |
routine. | |
@return True on success, false on failure, in which case GetLastError() | |
provides extended information about the error that occurred. | |
*/ | |
bool GetUsbDeviceDetails(HDEVINFO hardware_dev_info, | |
PSP_DEVICE_INTERFACE_DATA dev_info_data, | |
PSP_DEVICE_INTERFACE_DETAIL_DATA* dev_info_detail_data); | |
/** \brief Given the hardware device information and data gets device name. | |
Given the hardware_dev_info, representing a handle to the plug and | |
play information, and dev_info_data, representing a specific usb device, | |
gets device name. This routine uses GetUsbDeviceDetails to extract device | |
name. | |
@param[in] hardware_dev_info A handle to hardware device information obtained | |
from PnP manager via SetupDiGetClassDevs() | |
@param[in] dev_info_data Device information data obtained via call to | |
SetupDiEnumDeviceInterfaces() | |
@param[out] name Upon successfull completion will have name for the device. | |
@return True on success, false on failure, in which case GetLastError() | |
provides extended information about the error that occurred. | |
*/ | |
bool GetUsbDeviceName(HDEVINFO hardware_dev_info, | |
PSP_DEVICE_INTERFACE_DATA dev_info_data, | |
std::wstring* name); | |
/** \brief Checks if given interface is available via custom USB driver. | |
In this routine we will query the given interface with an IOCTL that should | |
be supported by the custom driver. If IOCTL fails, we make a conclusion that | |
this interface is available via WinUsb, and not via custom USB driver. | |
@param[in] interface_name Name of the interface to check. | |
@return true if interface is available via custom USB driver, or false | |
otherwise. | |
*/ | |
bool IsLegacyInterface(const wchar_t* interface_name); | |
#endif // ANDROID_USB_API_ADB_HELPER_ROUTINES_H__ |