📄 usbioctl.h
字号:
/*++
Copyright (c) 1998-99 Microsoft Corporation
Module Name:
USBIOCTL.H
Abstract:
structures common to the USBD and USB device drivers.
Environment:
Kernel & user mode
Revision History:
09-29-95 : created
01-06-97 : added user mode hub ioctls
--*/
#ifndef __USBIOCTL_H__
#define __USBIOCTL_H__
#include "usb100.h"
#ifndef FAR
#define FAR
#endif
/* f18a0e88-c30c-11d0-8815-00a0c906bed8 */
DEFINE_GUID( GUID_CLASS_USBHUB, 0xf18a0e88, 0xc30c, 0x11d0, 0x88, 0x15, 0x00, \
0xa0, 0xc9, 0x06, 0xbe, 0xd8);
/* A5DCBF10-6530-11D2-901F-00C04FB951ED */
DEFINE_GUID(GUID_CLASS_USB_DEVICE, 0xA5DCBF10L, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, \
0xC0, 0x4F, 0xB9, 0x51, 0xED);
/* 4E623B20-CB14-11D1-B331-00A0C959BBD2 */
DEFINE_GUID(GUID_USB_WMI_STD_DATA, 0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00,\
0xA0, 0xC9, 0x59, 0xBB, 0xD2);
/* 4E623B20-CB14-11D1-B331-00A0C959BBD2 */
DEFINE_GUID(GUID_USB_WMI_STD_NOTIFICATION, 0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00,\
0xA0, 0xC9, 0x59, 0xBB, 0xD2);
#define FILE_DEVICE_USB FILE_DEVICE_UNKNOWN
/*
USB IOCTLS
*/
#define USB_IOCTL_INTERNAL_INDEX 0x0000
#define USB_IOCTL_INDEX 0x00ff
/*
USB Internal IOCtls
*/
/* IOCTL_INTERNAL_USB_SUBMIT_URB
This IOCTL is used by client drivers to submit URB (USB Request Blocks)
Parameters.Others.Argument1 = pointer to URB
*/
#define IOCTL_INTERNAL_USB_SUBMIT_URB CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INTERNAL_INDEX, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_RESET_PORT
*/
#define IOCTL_INTERNAL_USB_RESET_PORT CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INTERNAL_INDEX+1, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO
This IOCTL is used internally by the hub driver
Parameters.Others.Argument1 = pointer to be filled in with RootHubPdo;
Parameters.Others.Argument2 = pointer to be filled in with HcdDeviceObject;
*/
#define IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INTERNAL_INDEX+3, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_GET_PORT_STATUS
This IOCTL returns the current port status
Parameters.Others.Argument1 = pointer to port status register (ULONG)
status bits are:
USBD_PORT_ENABLED
*/
#define USBD_PORT_ENABLED 0x00000001
#define USBD_PORT_CONNECTED 0x00000002
#define IOCTL_INTERNAL_USB_GET_PORT_STATUS CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INTERNAL_INDEX+4, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_ENABLE_PORT
This IOCTL will request the hub to re-enable a disabled port
*/
#define IOCTL_INTERNAL_USB_ENABLE_PORT CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INTERNAL_INDEX+5, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_GET_HUB_COUNT
This IOCTL is used internally by the hub driver
Parameters.Others.Argument1 = pointer to be count of hubs in chain;
*/
#define IOCTL_INTERNAL_USB_GET_HUB_COUNT CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INTERNAL_INDEX+6, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_CYCLE_PORT
This will simulate a plug/unplug on the port
*/
#define IOCTL_INTERNAL_USB_CYCLE_PORT CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INTERNAL_INDEX+7, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_HUB_NAME CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INTERNAL_INDEX+8, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_BUS_INFO CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+9, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+10, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_BUSGUID_INFO CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+11, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+12, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
/*
USB Public IOCtls
*/
/************************************************************
The following IOCTLS are always sent to the HCD symbolic
name
*************************************************************/
/*
this ioctl is for adding debug hooks to HCDs
*/
#define IOCTL_USB_HCD_GET_STATS_1 CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_HCD_GET_STATS_2 CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+11, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
/*
These ioctls are used for USB diagnostic and test applications
*/
#define IOCTL_USB_DIAGNOSTIC_MODE_ON CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+1, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_DIAGNOSTIC_MODE_OFF CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+2, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_GET_ROOT_HUB_NAME CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+3, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_GET_HCD_DRIVERKEY_NAME CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+10, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_HCD_DISABLE_PORT CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+13, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_HCD_ENABLE_PORT CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+14, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
/*********************************************************
The following IOCTLS are always sent to symbolic names
created by usbhub
**********************************************************/
/*
Utility IOCTLS supported by the hub device
*/
/*
These ioctls are supported by the hub driver for
use by user mode USB utilities.
*/
#define IOCTL_USB_GET_NODE_INFORMATION CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+3, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+4, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+5, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_NAME CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+6, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_DIAG_IGNORE_HUBS_ON CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+7, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_DIAG_IGNORE_HUBS_OFF CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+8, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME CTL_CODE(FILE_DEVICE_USB, \
USB_IOCTL_INDEX+9, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
/*
structures for user mode ioctls
*/
#include <pshpack1.h>
typedef enum _USB_HUB_NODE {
UsbHub,
UsbMIParent
} USB_HUB_NODE;
typedef struct _USB_HUB_INFORMATION {
/*
copy of data from hub descriptor
*/
USB_HUB_DESCRIPTOR HubDescriptor;
BOOLEAN HubIsBusPowered;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -