You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
6.7 KiB
138 lines
6.7 KiB
/*
|
|
* 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__
|