Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

88 lines
2.5 KiB

#ifndef __OPAQUE_H__
#define __OPAQUE_H__
// ******************************************************************************
//
// information for each active pipe on a device
//
typedef struct _USBD_PIPE {
ULONG Sig;
USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
PVOID HcdEndpoint;
ULONG MaxTransferSize;
#if 1
ULONG ScheduleOffset;
ULONG UsbdPipeFlags;
#endif
} USBD_PIPE, *PUSBD_PIPE;
//
// information for each active interface
// for a device
//
typedef struct _USBD_INTERFACE {
ULONG Sig;
BOOLEAN HasAlternateSettings;
UCHAR Pad[3];
USB_INTERFACE_DESCRIPTOR InterfaceDescriptor; // copy of interface descriptor
// copy of interfaceInformation structure, stores user parameters
// for interface in case of failure during alt-interface selection
PUSBD_INTERFACE_INFORMATION InterfaceInformation;
USBD_PIPE PipeHandle[0]; // array of pipe handle structures
} USBD_INTERFACE, *PUSBD_INTERFACE;
//
// informnation for the active configuration
// on a device
//
typedef struct _USBD_CONFIG {
ULONG Sig;
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor;
PUSBD_INTERFACE InterfaceHandle[1]; // array of pointers to interface
} USBD_CONFIG, *PUSBD_CONFIG;
typedef struct _USBD_DEVICE_DATA {
ULONG Sig;
USHORT DeviceAddress; // address assigned to the device
UCHAR Pad[2];
PUSBD_CONFIG ConfigurationHandle;
// KTIMER TimeoutTimer;
// KDPC TimeoutDpc;
USBD_PIPE DefaultPipe;
USB_DEVICE_DESCRIPTOR DeviceDescriptor; // a copy of the USB device descriptor
BOOLEAN LowSpeed; // TRUE if the device is low speed
BOOLEAN AcceptingRequests;
} USBD_DEVICE_DATA, *PUSBD_DEVICE_DATA;
DECLSPEC_IMPORT
NTSTATUS
USBD_CreateDevice(
IN OUT PUSBD_DEVICE_DATA *DeviceData,
IN PDEVICE_OBJECT DeviceObject,
IN BOOLEAN DeviceIsLowSpeed,
IN ULONG MaxPacketSize_Endpoint0,
IN OUT PULONG NonCompliantDevice
);
DECLSPEC_IMPORT
NTSTATUS
USBD_InitializeDevice(
IN PUSBD_DEVICE_DATA DeviceData,
IN PDEVICE_OBJECT DeviceObject,
IN OUT PUSB_DEVICE_DESCRIPTOR DeviceDescriptor,
IN ULONG DeviceDescriptorLength,
IN OUT PUSB_CONFIGURATION_DESCRIPTOR ConfigDescriptor,
IN ULONG ConfigDescriptorLength
);
DECLSPEC_IMPORT
NTSTATUS
USBD_RemoveDevice(
IN PUSBD_DEVICE_DATA DeviceData,
IN PDEVICE_OBJECT DeviceObject,
IN UCHAR Flags
);
// END OF OPAQUE INFO ***********************************************************
#endif