亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hub.h

?? 這是一個開放源代碼的與WINNT/WIN2K/WIN2003兼容的操作系統(tǒng)
?? H
字號:

#ifndef __HUB_H__
#define __HUB_H__

/*
 * Hub Class feature numbers
 */
#define C_HUB_LOCAL_POWER	0
#define C_HUB_OVER_CURRENT	1

/*
 * Port feature numbers
 */
#define USB_PORT_FEAT_CONNECTION	0
#define USB_PORT_FEAT_ENABLE		1
#define USB_PORT_FEAT_SUSPEND		2
#define USB_PORT_FEAT_OVER_CURRENT	3
#define USB_PORT_FEAT_RESET			4
#define USB_PORT_FEAT_POWER			8
#define USB_PORT_FEAT_LOWSPEED		9
#define USB_PORT_FEAT_C_CONNECTION	16
#define USB_PORT_FEAT_C_ENABLE		17
#define USB_PORT_FEAT_C_SUSPEND		18
#define USB_PORT_FEAT_C_OVER_CURRENT	19
#define USB_PORT_FEAT_C_RESET		20

/* wPortStatus bits */
#define USB_PORT_STAT_CONNECTION	0x0001
#define USB_PORT_STAT_ENABLE		0x0002
#define USB_PORT_STAT_SUSPEND		0x0004
#define USB_PORT_STAT_OVERCURRENT	0x0008
#define USB_PORT_STAT_RESET			0x0010
#define USB_PORT_STAT_POWER			0x0100
#define USB_PORT_STAT_LOW_SPEED		0x0200

/* usb 2.0 features */
#define USB_PORT_STAT_HIGH_SPEED	0x0400
#define USB_PORT_STAT_PORT_TEST		0x0800
#define USB_PORT_STAT_PORT_INDICATOR 0x1000

/* wPortChange bits */
#define USB_PORT_STAT_C_CONNECTION	0x0001
#define USB_PORT_STAT_C_ENABLE		0x0002
#define USB_PORT_STAT_C_SUSPEND		0x0004
#define USB_PORT_STAT_C_OVERCURRENT	0x0008
#define USB_PORT_STAT_C_RESET		0x0010

/* wHubCharacteristics (masks) */
#define HUB_CHAR_LPSM		0x0003
#define HUB_CHAR_COMPOUND	0x0004
#define HUB_CHAR_OCPM		0x0018

/*
 *Hub Status & Hub Change bit masks
 */
#define HUB_STATUS_LOCAL_POWER	0x0001
#define HUB_STATUS_OVERCURRENT	0x0002

#define HUB_CHANGE_LOCAL_POWER	0x0001
#define HUB_CHANGE_OVERCURRENT	0x0002

#define HUB_DESCRIPTOR_MAX_SIZE	39	/* enough for 127 ports on a hub */

#define MAX_HUB_PORTS  					8
#define USB_HUB_INTERVAL 				0xff

#define USB_PORT_FLAG_STATE_MASK		( 0xf << 16 )
#define USB_PORT_FLAG_ENABLE            ( 0x1 << 16 )
#define USB_PORT_FLAG_DISABLE           ( 0x2 << 16 )
#define USB_PORT_FLAG_DISCONNECT        ( 0x3 << 16 )

#define USB_PORT_QUE_STATE_MASK   		0xff	// for detail, refer to document.txt
#define STATE_IDLE						0x00
#define STATE_EXAMINE_STATUS_QUE		0x01	// set when post a event to examine the status queue
#define STATE_WAIT_STABLE				0x02	// set when a new connection comes and about to wait some ms
#define STATE_WAIT_RESET				0x03	// set when dev stable and about to reset, may pending in the event queue
#define STATE_WAIT_RESET_COMPLETE       0x04	// set when reset signal is about to assert on the port
#define STATE_WAIT_ADDRESSED			0x05	// set when reset complete and before address is assigned

#define port_state( port_FLAG ) \
( port_FLAG & USB_PORT_QUE_STATE_MASK )

#define set_port_state( port_FLAG, stATE ) \
{ port_FLAG = ( port_FLAG & (~USB_PORT_QUE_STATE_MASK ) ) | ( stATE & USB_PORT_QUE_STATE_MASK ) ;}

#define default_endp_handle( endp_HANDLE ) \
( ( endp_HANDLE & 0xffff ) == 0xffff )

#define is_if_dev( pdev ) ( pdev->flags & USB_DEV_FLAG_IF_DEV )

#define is_composite_dev( pdev ) \
( is_if_dev( pdev ) == FALSE \
&& pdev->pusb_dev_desc->bDeviceClass == 0 \
&& pdev->pusb_dev_desc->bDeviceSubClass == 0 )

#define dev_handle_from_dev( pdev ) ( pdev->dev_id << 16 )
#define hub_ext_from_dev( pdEV ) ( ( PHUB2_EXTENSION )pdEV->dev_ext )

#pragma pack( push, hub_align, 1 )
typedef struct _USB_PORT_STATUS
{
	USHORT 	wPortStatus;
	USHORT	wPortChange;

} USB_PORT_STATUS, *PUSB_PORT_STATUS;


typedef struct _USB_HUB_STATUS
{
	USHORT wHubStatus;
	USHORT wHubChange;

} USB_HUB_STATUS, *PUSB_HUB_STATUS;


typedef struct _USB_HUB_DESCRIPTOR
{
	BYTE 	bLength;
	BYTE 	bDescriptorType;
	BYTE 	bNbrPorts;
	USHORT	wHubCharacteristics;
	BYTE 	bPwrOn2PwrGood;
	BYTE 	bHubContrCurrent;

	/* DeviceRemovable and PortPwrCtrlMask want to be variable-length 
	   bitmaps that hold max 256 entries, but for now they're ignored */
	BYTE 	bitmap[0];
} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR;
#pragma pack( pop, hub_align )

typedef struct _PORT_STATUS_QUEUE
{
	USB_PORT_STATUS				port_status[ 4 ];
	BYTE						status_count;
	ULONG 						port_flags;

} PORT_STATUS_QUEUE, *PPORT_STATUS_QUEUE;

VOID
psq_init(
PPORT_STATUS_QUEUE psq
);

BOOLEAN
psq_enqueue(
PPORT_STATUS_QUEUE psq,
ULONG status
);
ULONG
psq_outqueue(
PPORT_STATUS_QUEUE psq
);			//return 0xffffffff if no element

BOOLEAN
psq_push(
PPORT_STATUS_QUEUE psq,
ULONG status
);

#define psq_is_empty( pSQ ) ( ( pSQ )->status_count == 0 )
#define psq_is_full( pSQ ) ( ( pSQ )->status_count == 4 )
#define psq_count( psq ) ( ( psq )->status_count )
#define psq_peek( psq, i ) \
( ( ( ULONG )i ) < 3 ? ( psq )->port_status[ i ] : ( psq )->port_status[ 3 ] )

#define MAX_DEVS        		127
#define EHCI_MAX_ROOT_PORTS		15

typedef struct _HUB_EXTENSION
{

	LONG 						port_count;
	PUSB_DEV  					child_dev[ MAX_HUB_PORTS + 1 ];

	PORT_STATUS_QUEUE			port_status_queue[ MAX_HUB_PORTS + 1];
	PUSB_DEV   					pdev;
	PUSB_INTERFACE				pif;
	BYTE 						int_data_buf[ 64 ];

	USB_HUB_STATUS   			hub_status;
	USB_PORT_STATUS				port_status;		//working data buf for get port feature
	
	USB_PORT_STATUS				rh_port1_status; 	//working buf for get rh port1 feature
	USB_PORT_STATUS				rh_port2_status; 	//working buf for get rh port2 feature
	
	USB_HUB_DESCRIPTOR			hub_desc;

} HUB_EXTENSION, *PHUB_EXTENSION;

typedef struct _HUB2_PORT_TT
{
	ULONG tt_busy : 1;

} HUB2_PORT_TT, *PHUB2_PORT_TT;

typedef struct _HUB2_EXTENSION
{

	LONG 						port_count;
	PUSB_DEV  					child_dev[ MAX_HUB_PORTS + 1 ];

	PORT_STATUS_QUEUE			port_status_queue[ MAX_HUB_PORTS + 1];

	PUSB_DEV   					pdev;
	PUSB_INTERFACE				pif;
	BYTE 						int_data_buf[ 32 ];	// for ports up to 127

	USB_HUB_STATUS   			hub_status;
	USB_PORT_STATUS				port_status;		//working data buf for get port feature
	
	USB_PORT_STATUS				rh_port_status[ EHCI_MAX_ROOT_PORTS ]; 	//working buf for get rh ports feature

	UCHAR						multiple_tt;			// boolean
	ULONG						tt_status_map[ 4 ];		// bit map to indicate the indexed tt's periodic buffer busy or not
	ULONG						tt_bulk_map[ 4 ];		// bit map to indicate the indexed tt's bulk/control buffer busy or not
	USB_HUB_DESCRIPTOR			hub_desc;

} HUB2_EXTENSION, *PHUB2_EXTENSION;


VOID
event_list_default_process_queue(
PLIST_HEAD event_list,
PUSB_EVENT_POOL event_pool,
PUSB_EVENT usb_event,
PUSB_EVENT out_event
);

VOID
event_list_default_process_event(
PUSB_DEV dev,
ULONG event,
ULONG context,
ULONG param
);

// root hub routines and definitions

#define RH_INTERVAL   ( USB_HUB_INTERVAL / DEV_MGR_TIMER_INTERVAL_MS )

BOOLEAN
rh_driver_destroy(
PUSB_DEV_MANAGER dev_mgr,
PUSB_DRIVER pdriver
);

BOOLEAN
rh_driver_init(
PUSB_DEV_MANAGER dev_mgr,
PUSB_DRIVER pdriver
);

BOOLEAN
rh_destroy(
PUSB_DEV pdev
);

VOID
rh_timer_svc(
PUSB_DEV dev,
PVOID context
);

BOOLEAN
rh_submit_urb(
PUSB_DEV pdev,
PURB urb
);

BOOLEAN
hub_init(
PUSB_DEV pdev
);

BOOLEAN
hub_destroy(
PUSB_DEV pdev
);

BOOLEAN
hub_lock_tt(
PUSB_DEV pdev,
UCHAR port_idx,
UCHAR type   // transfer type
);

BOOLEAN
hub_unlock_tt(
PUSB_DEV pdev,
UCHAR port_idx,
UCHAR type
);


VOID
hub_post_clear_tt_event(
PUSB_DEV pdev,
BYTE port_idx,
ULONG pipe
);

BOOLEAN
compdev_driver_init(
PUSB_DEV_MANAGER dev_mgr,
PUSB_DRIVER pdriver
);

BOOLEAN
compdev_driver_destroy(
PUSB_DEV_MANAGER dev_mgr,
PUSB_DRIVER pdriver
);

BOOLEAN
gendrv_driver_init(
PUSB_DEV_MANAGER dev_mgr,
PUSB_DRIVER pdriver
);

BOOLEAN
gendrv_driver_destroy(
PUSB_DEV_MANAGER dev_mgr,
PUSB_DRIVER pdriver
);

BOOLEAN
gendrv_if_driver_init(
PUSB_DEV_MANAGER dev_mgr,
PUSB_DRIVER pdriver
);

BOOLEAN
gendrv_if_driver_destroy(
PUSB_DEV_MANAGER dev_mgr,
PUSB_DRIVER pdriver
);

BOOLEAN hub_driver_init(PUSB_DEV_MANAGER dev_mgr, PUSB_DRIVER pdriver);
BOOLEAN hub_driver_destroy(PUSB_DEV_MANAGER dev_mgr, PUSB_DRIVER pdriver);
BOOLEAN hub_remove_reset_event(PUSB_DEV pdev, ULONG port_idx, BOOLEAN from_dpc);
BOOLEAN hub_start_next_reset_port(PUSB_DEV_MANAGER dev_mgr, BOOLEAN from_dpc);
NTSTATUS hub_start_int_request(PUSB_DEV pdev);

#endif


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区中文字幕| 精品欧美一区二区久久| 亚洲精品成人a在线观看| 91色视频在线| 亚洲在线免费播放| 在线成人av网站| 麻豆视频一区二区| 久久亚区不卡日本| 不卡的av在线播放| 亚洲成人激情综合网| 欧美第一区第二区| 成人美女在线观看| 亚洲大片一区二区三区| 日韩欧美高清在线| 99久久久久久99| 婷婷综合另类小说色区| 国产亚洲欧美一级| 91极品美女在线| 蜜桃av一区二区三区| 欧美韩国日本综合| 欧美在线一区二区| 美国av一区二区| 国产精品福利一区| 这里是久久伊人| 欧美群妇大交群的观看方式| 国产肉丝袜一区二区| 国产99久久久精品| 亚洲影视资源网| 精品国产乱码久久| 色综合久久久久久久| 免费人成在线不卡| 国产精品乱人伦中文| 欧美精选一区二区| 波多野结衣精品在线| 日本不卡高清视频| 国产精品电影院| 精品少妇一区二区三区在线视频 | 欧美一区二区视频在线观看2022| 国内精品视频一区二区三区八戒| 亚洲精品国久久99热| 精品人在线二区三区| 91免费国产视频网站| 国产综合成人久久大片91| 亚洲免费在线电影| 精品国产免费人成电影在线观看四季| 91在线高清观看| 精品在线免费视频| 亚洲成人资源在线| 日韩理论片网站| 久久久国产精品麻豆| 欧美一卡在线观看| 欧美调教femdomvk| 99在线精品视频| 韩国理伦片一区二区三区在线播放| 亚洲最大成人综合| 亚洲图片另类小说| 久久精品男人天堂av| 日韩一级二级三级精品视频| 在线观看日产精品| aaa亚洲精品| 国产成人免费在线| 国产乱子伦视频一区二区三区 | 日韩欧美一级片| 欧美日韩大陆一区二区| 色哟哟一区二区三区| 99久久99精品久久久久久 | 午夜久久福利影院| 一区二区三区免费网站| 亚洲日本青草视频在线怡红院| 欧美国产精品中文字幕| 精品久久一区二区| 精品久久一二三区| www久久久久| 欧美精品一区二区在线播放| 精品免费日韩av| 精品播放一区二区| 久久免费看少妇高潮| 久久精品一区八戒影视| 久久久美女毛片| 中文字幕精品在线不卡| 国产日韩精品一区二区三区在线| 久久久蜜桃精品| 国产亚洲精品超碰| 中文字幕在线观看不卡| 中文字幕一区二区在线播放 | 日韩一区欧美一区| 玉米视频成人免费看| 亚洲一区二区欧美日韩 | 91 com成人网| 精品国产乱子伦一区| 久久久久久免费网| 亚洲国产成人自拍| 亚洲卡通动漫在线| 日韩国产成人精品| 精品一区二区久久久| 国产成人综合在线观看| 99久久婷婷国产| 欧美日韩在线精品一区二区三区激情 | 久久久精品综合| 国产精品伦理在线| 亚洲午夜久久久久| 麻豆成人久久精品二区三区小说| 国产精品亚洲午夜一区二区三区 | 欧美中文字幕久久 | 久久亚洲精华国产精华液 | 亚洲女人的天堂| 日本最新不卡在线| 粉嫩aⅴ一区二区三区四区| 一本高清dvd不卡在线观看| 欧美老女人第四色| 国产亚洲欧美日韩在线一区| 亚洲综合在线免费观看| 老司机精品视频线观看86| 成人综合在线网站| 欧美视频在线不卡| 久久久综合视频| 亚洲午夜av在线| 国产成人av一区二区三区在线| 一本色道久久加勒比精品| 日韩美一区二区三区| 国产精品色眯眯| 日韩中文字幕亚洲一区二区va在线| 粗大黑人巨茎大战欧美成人| 制服丝袜一区二区三区| 中文无字幕一区二区三区| 视频一区中文字幕| 99精品一区二区| 欧美电影免费观看高清完整版在线 | 91在线国内视频| 欧美一区二区三区日韩| 国产精品女人毛片| 美女视频黄 久久| 在线免费观看日本欧美| 久久精品人人做人人综合| 午夜成人免费视频| 91美女视频网站| 久久精品水蜜桃av综合天堂| 首页国产欧美久久| 91福利小视频| 中文字幕免费不卡在线| 精品系列免费在线观看| 精品视频1区2区| 亚洲乱码中文字幕综合| 国产不卡视频在线播放| 精品动漫一区二区三区在线观看| 丝袜美腿高跟呻吟高潮一区| 色久优优欧美色久优优| 国产精品久久久久影院老司| 国产麻豆精品在线| 日韩精品在线一区| 婷婷中文字幕综合| 欧美日韩在线免费视频| 亚洲精品久久久蜜桃| 91麻豆文化传媒在线观看| 国产精品萝li| 成人爱爱电影网址| 国产精品欧美久久久久无广告| 国产成人啪午夜精品网站男同| 久久综合九色综合欧美98| 麻豆国产精品官网| 日韩免费观看2025年上映的电影| 日本在线不卡一区| 在线不卡免费欧美| 丝袜a∨在线一区二区三区不卡| 在线精品国精品国产尤物884a| 尤物av一区二区| 色综合久久88色综合天天6| 中文字幕字幕中文在线中不卡视频| 成人免费视频一区| 日本一区二区免费在线| 成人黄色软件下载| 国产精品久久久久久妇女6080| 99久久伊人精品| 亚洲欧美日本韩国| 在线免费精品视频| 香蕉久久夜色精品国产使用方法 | 日韩av电影免费观看高清完整版| 制服丝袜中文字幕一区| 精品一区二区三区香蕉蜜桃 | 91麻豆免费视频| 亚洲电影欧美电影有声小说| 欧美日韩成人高清| 毛片一区二区三区| 久久免费看少妇高潮| 97久久精品人人做人人爽50路| 亚洲免费在线观看视频| 欧美顶级少妇做爰| 精品一区二区三区av| 欧美国产日韩a欧美在线观看| 91在线观看下载| 青娱乐精品在线视频| 久久久www成人免费毛片麻豆| www.日韩精品| 亚洲一区二区三区四区的 | 国产精品免费久久| 在线精品视频免费播放| 麻豆91在线看| 中文字幕日韩欧美一区二区三区| 欧美日韩中文字幕一区二区| 国精产品一区一区三区mba视频|