⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb.h

📁 ndis在linux下的无线网卡驱动源码
💻 H
字号:
/* *  Copyright (C) 2004 Jan Kiszka *  Copyright (C) 2005 Giridhar Pemmasani * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *  GNU General Public License for more details. * */#ifndef _USB_H_#define _USB_H_#include "ntoskernel.h"#define IOCTL_INTERNAL_USB_SUBMIT_URB			0x00220003#define IOCTL_INTERNAL_USB_RESET_PORT			0x00220007#define IOCTL_INTERNAL_USB_GET_PORT_STATUS		0x00220013#define IOCTL_INTERNAL_USB_CYCLE_PORT			0x0022001F#define IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION	0x00220027#define URB_FUNCTION_SELECT_CONFIGURATION            0x0000#define URB_FUNCTION_SELECT_INTERFACE                0x0001#define URB_FUNCTION_ABORT_PIPE                      0x0002#define URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL       0x0003#define URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL    0x0004#define URB_FUNCTION_GET_FRAME_LENGTH                0x0005#define URB_FUNCTION_SET_FRAME_LENGTH                0x0006#define URB_FUNCTION_GET_CURRENT_FRAME_NUMBER        0x0007#define URB_FUNCTION_CONTROL_TRANSFER                0x0008#define URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER      0x0009#define URB_FUNCTION_ISOCH_TRANSFER                  0x000A#define URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE      0x000B#define URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE        0x000C#define URB_FUNCTION_SET_FEATURE_TO_DEVICE           0x000D#define URB_FUNCTION_SET_FEATURE_TO_INTERFACE        0x000E#define URB_FUNCTION_SET_FEATURE_TO_ENDPOINT         0x000F#define URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE         0x0010#define URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE      0x0011#define URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT       0x0012#define URB_FUNCTION_GET_STATUS_FROM_DEVICE          0x0013#define URB_FUNCTION_GET_STATUS_FROM_INTERFACE       0x0014#define URB_FUNCTION_GET_STATUS_FROM_ENDPOINT        0x0015#define URB_FUNCTION_RESERVED_0X0016                 0x0016#define URB_FUNCTION_VENDOR_DEVICE                   0x0017#define URB_FUNCTION_VENDOR_INTERFACE                0x0018#define URB_FUNCTION_VENDOR_ENDPOINT                 0x0019#define URB_FUNCTION_CLASS_DEVICE                    0x001A#define URB_FUNCTION_CLASS_INTERFACE                 0x001B#define URB_FUNCTION_CLASS_ENDPOINT                  0x001C#define URB_FUNCTION_RESERVE_0X001D                  0x001D#define URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL 0x001E#define URB_FUNCTION_CLASS_OTHER                     0x001F#define URB_FUNCTION_VENDOR_OTHER                    0x0020#define URB_FUNCTION_GET_STATUS_FROM_OTHER           0x0021#define URB_FUNCTION_CLEAR_FEATURE_TO_OTHER          0x0022#define URB_FUNCTION_SET_FEATURE_TO_OTHER            0x0023#define URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT    0x0024#define URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT      0x0025#define URB_FUNCTION_GET_CONFIGURATION               0x0026#define URB_FUNCTION_GET_INTERFACE                   0x0027#define URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE   0x0028#define URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE     0x0029#define URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR       0x002A#define URB_FUNCTION_RESERVE_0X002B                  0x002B#define URB_FUNCTION_RESERVE_0X002C                  0x002C#define URB_FUNCTION_RESERVE_0X002D                  0x002D#define URB_FUNCTION_RESERVE_0X002E                  0x002E#define URB_FUNCTION_RESERVE_0X002F                  0x002F// USB 2.0 calls start at 0x0030#define URB_FUNCTION_SYNC_RESET_PIPE                 0x0030#define URB_FUNCTION_SYNC_CLEAR_STALL                0x0031#define URB_FUNCTION_CONTROL_TRANSFER_EX             0x0032#define USBD_PF_CHANGE_MAX_PACKET		0x00000001#define USBD_TRANSFER_DIRECTION_OUT		0#define USBD_TRANSFER_DIRECTION_IN		1#define USBD_SHORT_TRANSFER_OK			0x00000002#define USBD_START_ISO_TRANSFER_ASAP		0x00000004#define USBD_DEFAULT_PIPE_TRANSFER		0x00000008#define USBD_TRANSFER_DIRECTION(flags)		\	((flags) & USBD_TRANSFER_DIRECTION_IN)enum pipe_type {UsbdPipeTypeControl = USB_ENDPOINT_XFER_CONTROL,		UsbdPipeTypeIsochronous = USB_ENDPOINT_XFER_ISOC,		UsbdPipeTypeBulk = USB_ENDPOINT_XFER_BULK,		UsbdPipeTypeInterrupt = USB_ENDPOINT_XFER_INT};#define USBD_IS_BULK_PIPE(pipe_handle)					\	(((pipe_handle)->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)	\	 == USB_ENDPOINT_XFER_BULK)#define USBD_IS_INT_PIPE(pipe_handle)					\	(((pipe_handle)->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)	\	 == USB_ENDPOINT_XFER_INT)#define USBD_PORT_ENABLED			0x00000001#define USBD_PORT_CONNECTED			0x00000002typedef LONG USBD_STATUS;#define USBD_STATUS_SUCCESS			0x0#define USBD_STATUS_PENDING			0x40000000#define USBD_STATUS_CANCELED			0x00010000#define USBD_STATUS_CRC				0xC0000001#define USBD_STATUS_BTSTUFF			0xC0000002#define USBD_STATUS_DATA_TOGGLE_MISMATCH	0xC0000003#define USBD_STATUS_STALL_PID			0xC0000004#define USBD_STATUS_DEV_NOT_RESPONDING		0xC0000005#define USBD_STATUS_PID_CHECK_FAILURE		0xC0000006#define USBD_STATUS_UNEXPECTED_PID	     	0xC0000007#define USBD_STATUS_DATA_OVERRUN		0xC0000008#define USBD_STATUS_DATA_UNDERRUN		0xC0000009#define USBD_STATUS_RESERVED1			0xC000000A#define USBD_STATUS_RESERVED2			0xC000000B#define USBD_STATUS_BUFFER_OVERRUN		0xC000000C#define USBD_STATUS_BUFFER_UNDERRUN		0xC000000D#define USBD_STATUS_NOT_ACCESSED		0xC000000F#define USBD_STATUS_FIFO			0xC0000010#define USBD_STATUS_XACT_ERROR			0xC0000011#define USBD_STATUS_BABBLE_DETECTED		0xC0000012#define USBD_STATUS_DATA_BUFFER_ERROR		0xC0000013#define USBD_STATUS_NOT_SUPPORTED		0xC0000E00#define USBD_STATUS_BUFFER_TOO_SMALL		0xC0003000#define USBD_STATUS_DEVICE_GONE			0xC0007000#define USBD_STATUS_NO_MEMORY			0x80000100#define USBD_STATUS_INVALID_URB_FUNCTION	0x80000200#define USBD_STATUS_INVALID_PARAMETER		0x80000300#define USBD_STATUS_REQUEST_FAILED		0x80000500#define USBD_STATUS_INVALID_PIPE_HANDLE		0x80000600#define USBD_STATUS_ERROR_SHORT_TRANSFER	0x80000900#define USBD_DEFAULT_MAXIMUM_TRANSFER_SIZE	PAGE_SIZEstruct urb_hcd_area {	void *reserved8[8];};typedef struct usb_endpoint_descriptor *usbd_pipe_handle;typedef struct usb_descriptor_header usb_common_descriptor_t;struct usbd_pipe_information {	USHORT wMaxPacketSize;	UCHAR bEndpointAddress;	UCHAR bInterval;	enum pipe_type type;	usbd_pipe_handle handle;	ULONG max_tx_size;	ULONG flags;};struct usbd_interface_information {	USHORT bLength;	UCHAR bInterfaceNumber;	UCHAR bAlternateSetting;	UCHAR bInterfaceClass;	UCHAR bInterfaceSubClass;	UCHAR bInterfaceProtocol;	UCHAR reserved;	void *handle;	ULONG bNumEndpoints;	struct usbd_pipe_information pipes[1];};struct usbd_interface_list_entry {	struct usb_interface_descriptor *intf_desc;	struct usbd_interface_information *intf;};struct nt_urb_header {	USHORT length;	USHORT function;	USBD_STATUS status;	void *usbd_dev_handle;	ULONG usbd_flags;};struct usbd_select_interface {	struct nt_urb_header header;	void *handle;	struct usbd_interface_information intf;};struct usbd_select_configuration {	struct nt_urb_header header;	struct usb_config_descriptor *config;	void *handle;	struct usbd_interface_information intf;};struct usbd_control_descriptor_request {	struct nt_urb_header header;	void *reserved;	ULONG reserved0;	ULONG transfer_buffer_length;	void *transfer_buffer;	struct mdl *mdl;	union nt_urb *urb_link;	struct urb_hcd_area hca;	USHORT reserved1;	UCHAR index;	UCHAR desc_type;	USHORT language_id;	USHORT reserved2;};struct usbd_bulk_or_intr_transfer {	struct nt_urb_header header;	usbd_pipe_handle pipe_handle;	ULONG transfer_flags;	ULONG transfer_buffer_length;	void *transfer_buffer;	struct mdl *mdl;	union nt_urb *urb_link;	struct urb_hcd_area hca;};struct usbd_pipe_request {	struct nt_urb_header header;	usbd_pipe_handle pipe_handle;};struct usbd_vendor_or_class_request {	struct nt_urb_header header;	void *reserved;	ULONG transfer_flags;	ULONG transfer_buffer_length;	void *transfer_buffer;	struct mdl *mdl;	union nt_urb *link;	struct urb_hcd_area hca;	UCHAR reserved_bits;	UCHAR request;	USHORT value;	USHORT index;	USHORT reserved1;};struct usbd_iso_packet_desc {	ULONG offset;	ULONG length;	USBD_STATUS status;};struct usbd_isochronous_transfer {	struct nt_urb_header header;	usbd_pipe_handle pipe_handle;	ULONG transfer_flags;	ULONG transfer_buffer_length;	void *transfer_buffer;	struct mdl *mdl;	union nt_urb *urb_link;	struct urb_hcd_area hca;	ULONG start_frame;	ULONG number_of_packets;	ULONG error_count;	struct usbd_iso_packet_desc iso_packet[1];};union nt_urb {	struct nt_urb_header header;	struct usbd_select_interface select_intf;	struct usbd_select_configuration select_conf;	struct usbd_bulk_or_intr_transfer bulk_int_transfer;	struct usbd_control_descriptor_request control_desc;	struct usbd_vendor_or_class_request vendor_class_request;	struct usbd_isochronous_transfer isochronous;	struct usbd_pipe_request pipe_req;};struct usbd_bus_interface_usbdi {	USHORT Size;	USHORT Version;	void *Context;	void *InterfaceReference;	void *InterfaceDereference;	void *GetUSBDIVersion;	void *QueryBusTime;	void *SubmitIsoOutUrb;	void *QueryBusInformation;	/* version 1 and above have following field */	void *IsDeviceHighSpeed;	/* version 2 (and above) have following field */	void *LogEntry;};struct usbd_bus_information_level {	ULONG TotalBandwidth;	ULONG ConsumedBandwidth;	/* level 1 and above have following fields */	ULONG ControllerNameLength;	wchar_t ControllerName[1];};#define USBDI_VERSION_XP			0x00000500 // Windows XP#define USB_HCD_CAPS_SUPPORTS_RT_THREADS	0x00000001#define USB_BUSIF_USBDI_VERSION_0		0x0000#define USB_BUSIF_USBDI_VERSION_1		0x0001#define USB_BUSIF_USBDI_VERSION_2		0x0002struct usbd_version_info {	ULONG usbdi_version;	ULONG supported_usb_version;};struct usbd_idle_callback {	void *callback;	void *context;};#define NT_URB_STATUS(nt_urb) ((nt_urb)->header.status)NTSTATUS wrap_submit_irp(struct device_object *pdo, struct irp *irp);void wrap_suspend_urbs(struct wrap_device *wd);void wrap_resume_urbs(struct wrap_device *wd);void USBD_InterfaceGetUSBDIVersion(void *context,				   struct usbd_version_info *version_info,				   ULONG *hcd_capa) wstdcall;BOOLEAN USBD_InterfaceIsDeviceHighSpeed(void *context) wstdcall;void USBD_InterfaceReference(void *context) wstdcall;void USBD_InterfaceDereference(void *context) wstdcall;NTSTATUS USBD_InterfaceQueryBusTime(void *context, ULONG *frame) wstdcall;NTSTATUS USBD_InterfaceSubmitIsoOutUrb(void *context,				       union nt_urb *nt_urb) wstdcall;NTSTATUS USBD_InterfaceQueryBusInformation(void *context, ULONG level, void *buf,					   ULONG *buf_length,					   ULONG *buf_actual_length) wstdcall;NTSTATUS USBD_InterfaceLogEntry(void *context, ULONG driver_tag, ULONG enum_tag,				ULONG p1, ULONG p2) wstdcall;#endif /* USB_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -