📄 usbioctl.h
字号:
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
USBIOCTL.H
Abstract:
This file defines both kernel and user mode IOCTL
codes supported by the USB core stack.
Environment:
Kernel & user mode
Revision History:
09-29-95 : created
01-06-97 : added user mode hub ioctls
10-31-99 : cleanup and document, jdunn
--*/
#ifndef __USBIOCTL_H__
#define __USBIOCTL_H__
#include "usb100.h"
#ifndef FAR
#define FAR
#endif
#include "usbiodef.h"
#pragma message ("warning: using obsolete header file usbioctl.h")
/*
IOCTLS definitions
*/
/*
USB kernel Mode 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_SUBMIT_URB, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_RESET_PORT
This IOCTL is used by kernel mode drivers to reset their
upstream port.
After a successful reset the device is re-configured to the
same configuration it was in before the reset. All pipe
handles, configuration handles and interface handles remain
valid.
*/
#define IOCTL_INTERNAL_USB_RESET_PORT CTL_CODE(FILE_DEVICE_USB, \
USB_RESET_PORT, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO
This IOCTL is used internally by the hub driver this API will
return the PhysicalDeviceObject of the root hub enumerated by the
controller.
Parameters.Others.Argument1 =
pointer to be filled in with PDO for the root hub;
Parameters.Others.Argument2 =
pointer to be filled in with FDO of the USB Host Controller;
*/
#define IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO CTL_CODE(FILE_DEVICE_USB, \
USB_GET_ROOTHUB_PDO, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_GET_PORT_STATUS
This IOCTL returns the current status of the devices upstream
port.
Parameters.Others.Argument1 =
pointer to port status register (ULONG)
status bits are:
USBD_PORT_ENABLED
USBD_PORT_CONNECTED
*/
#define USBD_PORT_ENABLED 0x00000001
#define USBD_PORT_CONNECTED 0x00000002
#define IOCTL_INTERNAL_USB_GET_PORT_STATUS CTL_CODE(FILE_DEVICE_USB, \
USB_GET_PORT_STATUS, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_ENABLE_PORT
This IOCTL is obsolete, drivers should use
IOCTL_INTERNAL_USB_RESET_PORT
*/
#define IOCTL_INTERNAL_USB_ENABLE_PORT CTL_CODE(FILE_DEVICE_USB, \
USB_ENABLE_PORT, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION
This ioctl registers a device to receive notification when a specific
timeout has expired and it should now be suspended in order to conserve
power. If all devices on a hub are suspended, then the actual hub
can be suspended.
*/
#define IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION CTL_CODE(FILE_DEVICE_USB, \
USB_IDLE_NOTIFICATION, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_GET_HUB_COUNT
This IOCTL is used internally by the hub driver, it returns the
number of hubs between the device and the root hub.
Parameters.Others.Argument1 =
pointer to be count of hubs in chain;
*/
#define IOCTL_INTERNAL_USB_GET_HUB_COUNT CTL_CODE(FILE_DEVICE_USB, \
USB_GET_HUB_COUNT, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_CYCLE_PORT
This IOCTL will simulate a plug/unplug on the port.
The device will be removed and re-added by PnP.
*/
#define IOCTL_INTERNAL_USB_CYCLE_PORT CTL_CODE(FILE_DEVICE_USB, \
USB_CYCLE_PORT, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_GET_HUB_NAME
*/
#define IOCTL_INTERNAL_USB_GET_HUB_NAME CTL_CODE(FILE_DEVICE_USB, \
USB_GET_HUB_NAME, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_GET_BUS_INFO
This IOCTL is obsolete -- it has been replaced by the
USB_BUSIFFN_QUERY_BUS_INFORMATION service available thru
the usb stack bus interface.
*/
#define IOCTL_INTERNAL_USB_GET_BUS_INFO CTL_CODE(FILE_DEVICE_USB, \
USB_GET_BUS_INFO, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME
*/
#define IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME CTL_CODE(FILE_DEVICE_USB, \
USB_GET_CONTROLLER_NAME, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_GET_BUSGUID_INFO
*/
#define IOCTL_INTERNAL_USB_GET_BUSGUID_INFO CTL_CODE(FILE_DEVICE_USB, \
USB_GET_BUSGUID_INFO, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
/* IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO
*/
#define IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO CTL_CODE(FILE_DEVICE_USB, \
USB_GET_PARENT_HUB_INFO, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE CTL_CODE(FILE_DEVICE_USB, \
USB_GET_DEVICE_HANDLE, \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
/*
USB user mode IOCTLS
*/
/************************************************************
The following IOCTLS are always sent to the HCD symbolic
name
*************************************************************/
/* IOCTL_USB_HCD_GET_STATS_1 (OPTIONAL)
The following IOCTL is used to return internal statictics
for HCDs
*/
#define IOCTL_USB_HCD_GET_STATS_1 CTL_CODE(FILE_DEVICE_USB, \
HCD_GET_STATS_1, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
/* IOCTL_USB_HCD_GET_STATS_2 (OPTIONAL)
The following IOCTL is used to return internal statictics
for HCDs
*/
#define IOCTL_USB_HCD_GET_STATS_2 CTL_CODE(FILE_DEVICE_USB, \
HCD_GET_STATS_2, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_HCD_DISABLE_PORT CTL_CODE(FILE_DEVICE_USB, \
HCD_DISABLE_PORT, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_HCD_ENABLE_PORT CTL_CODE(FILE_DEVICE_USB, \
HCD_ENABLE_PORT, \
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, \
HCD_DIAGNOSTIC_MODE_ON, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_DIAGNOSTIC_MODE_OFF CTL_CODE(FILE_DEVICE_USB, \
HCD_DIAGNOSTIC_MODE_OFF, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_GET_ROOT_HUB_NAME CTL_CODE(FILE_DEVICE_USB, \
HCD_GET_ROOT_HUB_NAME, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_GET_HCD_DRIVERKEY_NAME CTL_CODE(FILE_DEVICE_USB, \
HCD_GET_DRIVERKEY_NAME, \
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_GET_NODE_INFORMATION, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION CTL_CODE(FILE_DEVICE_USB, \
USB_GET_NODE_CONNECTION_INFORMATION, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES CTL_CODE(FILE_DEVICE_USB, \
USB_GET_NODE_CONNECTION_ATTRIBUTES,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION CTL_CODE(FILE_DEVICE_USB, \
USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_NAME CTL_CODE(FILE_DEVICE_USB, \
USB_GET_NODE_CONNECTION_NAME, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_DIAG_IGNORE_HUBS_ON CTL_CODE(FILE_DEVICE_USB, \
USB_DIAG_IGNORE_HUBS_ON, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_DIAG_IGNORE_HUBS_OFF CTL_CODE(FILE_DEVICE_USB, \
USB_DIAG_IGNORE_HUBS_OFF, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME CTL_CODE(FILE_DEVICE_USB, \
USB_GET_NODE_CONNECTION_DRIVERKEY_NAME, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_USB_GET_HUB_CAPABILITIES CTL_CODE(FILE_DEVICE_USB, \
USB_GET_HUB_CAPABILITIES, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
/*
structures for user mode ioctls
*/
#include <pshpack1.h>
typedef enum _USB_HUB_NODE {
UsbHub,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -