/*++ Copyright (c) Microsoft Corporation. All rights reserved. Module Name: USBKERN.H Abstract: This file contains KERNEL Mode IOCTLS supported by the HCD (PORT) drivers ROOT HUB PDO. Environment: kernel mode Revision History: --*/ #ifndef __USBKERN_H__ #define __USBKERN_H__ #include "usbiodef.h" /* the following IOCTLS are supported by the ROOT HUB PDO */ /* 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. The HUB Driver passed this irp to its PDO. As the IRP is passed from HUB to HUB each hub FDO increments the count. When the irp reaches the root hub PDO it is completed Parameters.Others.Argument1 = pointer to be count of hubs in chain; */ #define IOCTL_INTERNAL_USB_GET_HUB_COUNT USB_KERNEL_CTL(USB_GET_HUB_COUNT) /* 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 USB_KERNEL_CTL(USB_GET_ROOTHUB_PDO) /* IOCTL_INTERNAL_USB_GET_DEVICE_ADDRESS This IOCTL returns the device address associated with a particular PDO. (INPUT) Parameters.Others.Argument1 = pointer to device handle (OUTPUT) Parameters.Others.Argument2 = pointer to device address The api travels all the way down the stack where it is handled by the port driver */ #define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE CTL_CODE(FILE_DEVICE_USB, \ USB_GET_DEVICE_HANDLE, \ METHOD_NEITHER, \ FILE_ANY_ACCESS) #endif //__USBKERN_H__