您的位置:首页 > 移动开发 > Objective-C

AdbInterfaceObject ::GetUsbDeviceDescriptor

2014-10-16 10:32 483 查看
作者微信:15013593099
欢迎交流

bool AdbInterfaceObject::GetUsbDeviceDescriptor(USB_DEVICE_DESCRIPTOR* desc) {

if (!IsOpened()) {

SetLastError(ERROR_INVALID_HANDLE);

return false;

}

if (NULL == desc) {

SetLastError(ERROR_INVALID_PARAMETER);

return false;

}

CopyMemory(desc, usb_device_descriptor(), sizeof(USB_DEVICE_DESCRIPTOR));

return true;

}

const USB_DEVICE_DESCRIPTOR* usb_device_descriptor() const {

return &usb_device_descriptor_;

}

bool AdbLegacyInterfaceObject::CacheUsbDeviceDescriptor(

HANDLE usb_device_handle) {

DWORD ret_bytes = 0;

BOOL ret = DeviceIoControl(usb_device_handle,

ADB_IOCTL_GET_USB_DEVICE_DESCRIPTOR,

NULL, 0,

&usb_device_descriptor_,

sizeof(usb_device_descriptor_),

&ret_bytes,

NULL);

ATLASSERT(!ret || (sizeof(USB_DEVICE_DESCRIPTOR) == ret_bytes));

return ret ? true : false;

}

bool AdbLegacyInterfaceObject::CacheUsbInterfaceDescriptor(

HANDLE usb_device_handle) {

DWORD ret_bytes = 0;

BOOL ret = DeviceIoControl(usb_device_handle,

ADB_IOCTL_GET_USB_INTERFACE_DESCRIPTOR,

NULL, 0,

&usb_interface_descriptor_,

sizeof(usb_interface_descriptor_),

&ret_bytes,

NULL);

ATLASSERT(!ret || (sizeof(USB_INTERFACE_DESCRIPTOR) == ret_bytes));

return ret ? true : false;

}

#define ADB_IOCTL_GET_USB_DEVICE_DESCRIPTOR \

CTL_CODE(FILE_DEVICE_UNKNOWN, \

ADB_CTL_GET_USB_DEVICE_DESCRIPTOR, \

METHOD_BUFFERED, \

FILE_READ_ACCESS)

#define ADB_CTL_GET_USB_DEVICE_DESCRIPTOR 10
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: