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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hub.h

?? ReactOS是一些高手根據Windows XP的內核編寫出的類XP。內核實現機理和API函數調用幾乎相同。甚至可以兼容XP的程序。喜歡研究系統內核的人可以看一看。
?? 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


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级中文字幕在线观看| bt欧美亚洲午夜电影天堂| 亚洲一卡二卡三卡四卡无卡久久| 日韩福利视频网| 欧美国产精品v| 欧美一区二区三区男人的天堂| 精品国产区一区| 蜜桃av噜噜一区| 久久精品人人做| 成人av网在线| 亚洲欧美一区二区三区久本道91 | 国产精品福利一区| 成人免费视频视频| 亚洲欧洲av在线| 欧美视频完全免费看| 亚洲va中文字幕| 久久综合九色综合欧美98| 成人免费黄色大片| 亚洲精品免费在线播放| 7777精品伊人久久久大香线蕉最新版| 亚洲第一av色| 日本一区二区免费在线观看视频| 91免费视频观看| 免费在线观看视频一区| 欧美成人精品二区三区99精品| 男女性色大片免费观看一区二区| 欧美视频一区二区三区在线观看| 精品在线播放免费| 中文字幕中文乱码欧美一区二区| 欧美中文字幕亚洲一区二区va在线 | 91蝌蚪porny| 日韩中文字幕一区二区三区| 国产精品美女一区二区在线观看| 日韩视频免费观看高清完整版 | 亚洲精品videosex极品| 久久精品亚洲乱码伦伦中文 | 欧美日韩激情一区二区三区| 蜜桃视频在线一区| 亚洲日本电影在线| 中文字幕一区二区日韩精品绯色| 精品对白一区国产伦| 欧美久久久一区| 9191成人精品久久| 暴力调教一区二区三区| 麻豆91精品视频| 国产一区二区三区免费| 久久成人av少妇免费| 亚洲成av人影院| 久久久久一区二区三区四区| 欧美日韩一区三区四区| 欧美一区二区三区四区高清| www国产成人| 一本一本大道香蕉久在线精品 | 亚洲成人免费在线观看| 亚洲欧洲一区二区在线播放| 欧美剧在线免费观看网站| 国产精品亚洲成人| 天天色综合成人网| 国产丝袜欧美中文另类| 欧美老女人第四色| 欧美精品乱人伦久久久久久| 精品亚洲欧美一区| 日韩毛片在线免费观看| 国产三级欧美三级| 在线播放日韩导航| 看国产成人h片视频| 美日韩黄色大片| 一区二区三区在线影院| 日韩精品一区二区三区在线观看| 高清不卡在线观看av| 亚洲五码中文字幕| 无码av中文一区二区三区桃花岛| 久久影院视频免费| 这里只有精品99re| 欧美精品久久99久久在免费线 | 91精品福利在线| 欧美亚洲一区二区在线观看| 欧美日本精品一区二区三区| 欧美一区二区三区免费观看视频| 国产日韩av一区| 亚洲123区在线观看| 99久久精品免费看国产免费软件| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 在线看一区二区| 欧美国产禁国产网站cc| 国产一区二区三区免费| 2024国产精品| 精品一区二区在线视频| 色噜噜狠狠成人中文综合| 日韩综合在线视频| 国产精品拍天天在线| 日韩一区二区中文字幕| 日韩av不卡一区二区| gogo大胆日本视频一区| 中文字幕欧美三区| 99九九99九九九视频精品| 亚洲卡通欧美制服中文| 欧美综合一区二区| 免费在线观看视频一区| 日韩午夜在线影院| 风间由美一区二区av101 | 91麻豆蜜桃一区二区三区| 日韩美女视频一区二区| 欧美日韩一区高清| 美女一区二区视频| 中文字幕一区二区三区在线不卡| 欧美日韩一区视频| 极品销魂美女一区二区三区| 国产精品不卡在线| 欧美肥胖老妇做爰| 色先锋资源久久综合| 狠狠色综合色综合网络| 亚洲福利视频导航| 国产精品不卡在线观看| 精品国产区一区| 6080国产精品一区二区| 97超碰欧美中文字幕| 国产真实精品久久二三区| 性欧美疯狂xxxxbbbb| 亚洲黄色av一区| 亚洲精品国产品国语在线app| 国产精品天美传媒| 91精品久久久久久久99蜜桃| 91理论电影在线观看| av电影在线观看完整版一区二区| 狠狠色狠狠色综合日日91app| 蜜臀国产一区二区三区在线播放| 一区二区三区四区精品在线视频| 中文字幕巨乱亚洲| 亚洲欧美在线观看| 亚洲视频一区二区在线| 欧美一区二区免费| 欧美日韩一区二区三区不卡| 欧美精品丝袜久久久中文字幕| 91精品综合久久久久久| 欧美mv日韩mv国产网站app| 日韩一卡二卡三卡国产欧美| 久久综合色婷婷| 国产精品情趣视频| 亚洲bt欧美bt精品777| 成人午夜大片免费观看| 欧美日韩中字一区| 国产精品亲子乱子伦xxxx裸| 日韩电影一二三区| 欧美日韩一区二区三区四区 | 欧美va亚洲va香蕉在线| 国产精品久久久久久久久久久免费看 | 激情综合网激情| 欧美三级韩国三级日本一级| 国产精品乱码一区二三区小蝌蚪| 日本aⅴ免费视频一区二区三区| 91丝袜高跟美女视频| 久久免费午夜影院| 男女男精品视频网| 69堂国产成人免费视频| 亚洲宅男天堂在线观看无病毒| www.欧美日韩| 亚洲免费观看高清完整| 日本高清不卡一区| 夜色激情一区二区| 欧美日韩视频在线一区二区| 亚洲精品伦理在线| 精品视频在线免费看| 亚洲国产一二三| 91精品久久久久久久91蜜桃| 日本一区中文字幕| 2020日本不卡一区二区视频| av成人免费在线| 亚洲国产日日夜夜| 欧美日韩精品一区二区天天拍小说 | 欧美国产日产图区| 99v久久综合狠狠综合久久| 日韩一区有码在线| 日韩欧美一区二区在线视频| 成人黄色电影在线| 日韩中文欧美在线| 国产精品久久久久影视| 欧美色图12p| 国产精品一区二区男女羞羞无遮挡| 国产精品午夜在线| 欧美一区二区视频在线观看2022| 国产69精品久久777的优势| 亚洲图片欧美一区| 国产精品你懂的| www久久精品| 欧美伦理视频网站| 99综合电影在线视频| 久久99精品国产.久久久久久 | 亚洲综合色自拍一区| 久久这里都是精品| 欧美日韩成人在线一区| 成人高清视频在线观看| 国产黄色精品网站| 久久99国产精品久久99果冻传媒| 亚洲免费电影在线| 国产欧美一区二区精品仙草咪| 欧美本精品男人aⅴ天堂| 欧美顶级少妇做爰| 欧美日韩第一区日日骚| 欧美区在线观看|