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

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

?? mass.c

?? zlg/fs源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
								
						}
						if((SenseData.ASC==0x28)&&(SenseData.ASCQ==0x00))
						{/* NOT READY TO READY TRANSITION-MEDIA CHANGED */
							
						}
					}
				}
				else
					return NULL;
			}
			else
				return hMedLUNPtr;	/* 正常退出 */
		}
	}
	return NULL;
}

//********************************************************************************
//函數名稱:Creat_Medium
//輸入參數:hMedLUNPtr,邏輯單元描述符指針
//			LUNIndex,邏輯單元索引,0為第1個邏輯單元
//輸出參數:無
//功能描述:關閉邏輯單元
//********************************************************************************
void Close_Medium(hMedLUN *hMedLUNPtr,unsigned char LUNIndex)
{
	if(hMedLUNPtr==NULL)
		return;
	if(hMedLUNPtr->MSC ==NULL)				/* 檢驗類描述結構指針*/
		return ;
	if(hMedLUNPtr->MSC->LUN < LUNIndex)		/* 檢驗邏輯單元索引 */
		return ;

	hMedLUNPtr->MSC->LUN_infor_ptr[LUNIndex]->LastLogicalBlookAddress =0;
	hMedLUNPtr->MSC->LUN_infor_ptr[LUNIndex]->BlockLengthInBytes=0;
}



//******************************************************************************************
// 函數名稱:CommandBlockHandle
// 輸入參數:tr_with_rbc_ptr,傳輸控制描述信息數據結構指針
// 輸出參數:COMMAND_PASSED,命令完成
//				    COMMAND_FAILED,命令失敗
//				    PHASE_ERROR,相位出錯
//   				    PERSISTENT_FAILURE,嚴重出錯
// 功能描述:大容量命令塊處理,包括Bulk_Only和CBI-Only兩個協議。
//******************************************************************************************
uint8 CommandBlockHandle(TR_With_RBC *tr_with_rbc_ptr)
{
	uint8	Statue;
	/* 單批量傳輸協議*/
	if( 0x50 == tr_with_rbc_ptr->MSC->ProtocolCode)
	{
		Statue = BulkOnlyComHandle( tr_with_rbc_ptr);
	}
	else
	/* CBI傳輸協議 */
	{
		Statue = CBIOnlyComHandle( tr_with_rbc_ptr);
	}
	return Statue;
}


//******************************************************************************************
//函數名稱:GetThisInquiryData
//輸入參數:hMedLUNPtr,邏輯單元描述符指針
//		  DataBuff_ptr,查詢數據存放的結構指針
//輸出參數:COMMAND_PASSED,命令完成
//		  COMMAND_FAILED,命令失敗
//		  PHASE_ERROR,相位出錯
//   		  PERSISTENT_FAILURE,嚴重出錯
//功能描述:查詢媒介信息,如廠商信息、產品信息及產品版本號。
//******************************************************************************************
 unsigned char	GetThisInquiryData(hMedLUN * hMedLUNPtr )
{
	TR_With_RBC		tr_with_rbc;
	unsigned char		InquiryDataBuf[36];
	unsigned char		Status;

	if(hMedLUNPtr->MSC==NULL)
		return	PERSISTENT_FAILURE;

	MCom_INQUIRY(hMedLUNPtr->MSC->RBC_BuffPtr);		// 命令設置
	tr_with_rbc.MSC = hMedLUNPtr->MSC;
	tr_with_rbc.LUN = hMedLUNPtr->LUN;
	tr_with_rbc.CBLength = (hMedLUNPtr->MSC->ProtocolCode==0x50)? 6:12;
	tr_with_rbc.DataTransferLength = 36;
	tr_with_rbc.Data_BuffPtr = InquiryDataBuf;
	tr_with_rbc.RBC_BuffPtr = hMedLUNPtr->MSC->RBC_BuffPtr;
	tr_with_rbc.TrDirection = IN_DATA;
	Status = CommandBlockHandle( &tr_with_rbc );

	if( Status == COMMAND_PASSED)
	{
		memcpy(hMedLUNPtr->VendorInfo, &InquiryDataBuf[8], 8);
		memcpy(hMedLUNPtr->ProductInfo, &InquiryDataBuf[16], 16);
		memcpy(hMedLUNPtr->ProductRev, &InquiryDataBuf[32], 4);
	}
	else
	{	memset(hMedLUNPtr->VendorInfo,0,8) ;	
		memset(hMedLUNPtr->ProductInfo,0,8) ;	
		memset(hMedLUNPtr->ProductRev,0,8) ;	
	}
	return Status;
}

//*****************************************************************************
//功能描述:GetThisMediumCapacity
//輸入參數:hMedLUNPtr
//輸出參數:COMMAND_PASSED,命令完成
//				    COMMAND_FAILED,命令失敗
//				    PHASE_ERROR,相位出錯
//   				    PERSISTENT_FAILURE,嚴重出錯
//功能描述:獲取媒介的容量,塊字節數及最后塊地址.
//****************************************************************************
unsigned char	GetThisMediumCapacity(hMedLUN * hMedLUNPtr )
{

	TR_With_RBC		tr_with_rbc;
	unsigned char		CapacityDataBuf[8];
	unsigned char		Status;
	
	if(hMedLUNPtr->MSC==NULL)
		return	PERSISTENT_FAILURE;

	MCom_ReadCapacity(hMedLUNPtr->MSC->RBC_BuffPtr);
	tr_with_rbc.MSC = hMedLUNPtr->MSC;
	tr_with_rbc.LUN = hMedLUNPtr->LUN;
	tr_with_rbc.CBLength = (hMedLUNPtr->MSC->ProtocolCode==0x50)? 10:12;	/* 命令長度 */
	tr_with_rbc.DataTransferLength = 0x08;									/* 傳輸數據長度為8字節 */
	tr_with_rbc.Data_BuffPtr = CapacityDataBuf;
	tr_with_rbc.RBC_BuffPtr = hMedLUNPtr->MSC->RBC_BuffPtr;
	tr_with_rbc.TrDirection = IN_DATA;
	Status = CommandBlockHandle( &tr_with_rbc );	

	if( Status == COMMAND_PASSED)
	{
		hMedLUNPtr->BlockLengthInBytes 			// 媒介塊長度(字節數)
			= 	CapacityDataBuf[7] + 
				CapacityDataBuf[6]*0x100 + 
				CapacityDataBuf[5]*0x10000+
				CapacityDataBuf[4]*0x1000000;
		hMedLUNPtr->LastLogicalBlookAddress 		// 媒介最后塊地址
			= 	CapacityDataBuf[3] + 
				CapacityDataBuf[2]*0x100 + 
				CapacityDataBuf[1]*0x10000+
				CapacityDataBuf[0]*0x1000000;
	}
	else
	{
		hMedLUNPtr->BlockLengthInBytes = 0;
		hMedLUNPtr->LastLogicalBlookAddress =0;
	}
	return Status;
}




//*****************************************************************************
//功能描述:GetRequestSense
//輸入參數:hMedLUNPtr,邏輯單元描述數據結構指針
//				   SenseDataPtr,判別代碼數據結構批針,保存返回數據
//輸出參數:COMMAND_PASSED,命令完成
//				    COMMAND_FAILED,命令失敗
//				    PHASE_ERROR,相位出錯
//   				    PERSISTENT_FAILURE,嚴重出錯
//功能描述:獲取媒介的容量,塊字節數及最后塊地址.
//****************************************************************************
unsigned char	GetRequestSense(hMedLUN * hMedLUNPtr, SENSE_DATA *SenseDataPtr)
{
	TR_With_RBC		tr_with_rbc;
	unsigned char		SenseDataBuf[18];
	unsigned char		Status;

	if(hMedLUNPtr->MSC==NULL)
		return	PERSISTENT_FAILURE;
	
	MCom_RequestSense(hMedLUNPtr->MSC->RBC_BuffPtr);
	tr_with_rbc.MSC = hMedLUNPtr->MSC;
	tr_with_rbc.LUN = hMedLUNPtr->LUN;
	tr_with_rbc.CBLength = (hMedLUNPtr->MSC->ProtocolCode==0x50)? 0x0c:12;	/* 命令長度 */
	tr_with_rbc.DataTransferLength = 0x12;									/* 傳輸數據長度為8字節 */
	tr_with_rbc.Data_BuffPtr = SenseDataBuf;
	tr_with_rbc.RBC_BuffPtr = hMedLUNPtr->MSC->RBC_BuffPtr;
	tr_with_rbc.TrDirection = IN_DATA;
	Status = CommandBlockHandle( &tr_with_rbc );

	if( Status == COMMAND_PASSED)
	{
		SenseDataPtr->SenseKey = SenseDataBuf[2]&0x0f;
		SenseDataPtr->ASC = SenseDataBuf[12];
		SenseDataPtr->ASCQ = SenseDataBuf[13];
	}
	return Status;
}


//****************************************************************************
//函數名稱:ReadBlockData
//輸入參數:MediumPtr,操作媒體句柄
//				  BufferPtr,存緩數據緩沖區指針
//				  LBA,邏輯塊地址
//				  TrBLength,邏輯塊數目(1~0xffff)。
//輸出參數:實際讀入的字節數,設備不存在或未準備好返回0.
//功能描述:讀邏輯單元塊數據。
//***************************************************************************
unsigned short ReadBlockData(hMedLUN 		*MediumPtr, 
							   unsigned char 	*BufferPtr,
							   unsigned int 	LBA, 
							   unsigned short 	TrBLength)
{
	TR_With_RBC		tr_with_rbc;
	 unsigned char 	Status;
	SENSE_DATA		SenseData;
	
	if(MediumPtr->MSC==NULL)
		return	0;
	if( (MediumPtr->BlockLengthInBytes==0x00)||
	    (MediumPtr->LastLogicalBlookAddress == 0x00) )
	    	return	(0);

	MCom_Read10(MediumPtr->MSC->RBC_BuffPtr, LBA, TrBLength);
	tr_with_rbc.MSC = MediumPtr->MSC;
	tr_with_rbc.LUN = MediumPtr->LUN;
	tr_with_rbc.CBLength = (MediumPtr->MSC->ProtocolCode==0x50)? 0x0A:12;	/* 命令長度 */
	tr_with_rbc.DataTransferLength = TrBLength * MediumPtr->BlockLengthInBytes;									/* 傳輸數據長度為8字節 */
	tr_with_rbc.Data_BuffPtr = BufferPtr;
	tr_with_rbc.RBC_BuffPtr = MediumPtr->MSC->RBC_BuffPtr;
	tr_with_rbc.TrDirection = IN_DATA;
	Status = CommandBlockHandle( &tr_with_rbc );

	if( Status == COMMAND_PASSED)
	{
		return tr_with_rbc.DataTransferLength;	// 返回傳輸的數據長度(字節)
	}
	else
	{
		if(GetRequestSense(MediumPtr, &SenseData))
			return NULL;
		else
		{	/* 這里分析出錯原因 */
			if((SenseData.ASC==0x3a)&&(SenseData.ASCQ==0x00))
			{/* MEDIUM NOT PRESENT */
				MediumPtr->BlockLengthInBytes = NULL;
				MediumPtr->LastLogicalBlookAddress = NULL;
			}
		}
	}
	return (0);								// 出錯返回0
}



//****************************************************************************
//函數名稱:WriteBlockData
//輸入參數:MediumPtr,操作媒體句柄
//				  BufferPtr,存緩數據緩沖區指針
//				  LBA,邏輯塊地址
//				  TrBLength,邏輯塊數目(1~0xffff)。
//輸出參數:實際讀入的字節數,設備不存在或未準備好返回NULL.
//功能描述:寫邏輯單元塊數據。 
//***************************************************************************
unsigned short WriteBlockData(hMedLUN 		*MediumPtr, 
							   unsigned char 	*BufferPtr,
							   unsigned int 	LBA, 
							   unsigned short 	TrBLength)
{
	TR_With_RBC		tr_with_rbc;
	 unsigned char 	Status;
	SENSE_DATA		SenseData;
	
	if(MediumPtr->MSC==NULL)
		return	(0);
	if( (MediumPtr->BlockLengthInBytes==0x00)||
	    (MediumPtr->LastLogicalBlookAddress == 0x00) )
	    	return	(0);
			
	MCom_Write10(MediumPtr->MSC->RBC_BuffPtr, LBA, TrBLength);
	tr_with_rbc.MSC = MediumPtr->MSC;
	tr_with_rbc.LUN = MediumPtr->LUN;
	tr_with_rbc.CBLength = (MediumPtr->MSC->ProtocolCode==0x50)? 0x0A:12;	/* 命令長度 */
	tr_with_rbc.DataTransferLength = TrBLength * MediumPtr->BlockLengthInBytes;									/* 傳輸數據長度為8字節 */
	tr_with_rbc.Data_BuffPtr = BufferPtr;
	tr_with_rbc.RBC_BuffPtr = MediumPtr->MSC->RBC_BuffPtr;
	tr_with_rbc.TrDirection = OUT_DATA;
	Status = CommandBlockHandle( &tr_with_rbc );

	if( Status == COMMAND_PASSED)
	{
		return tr_with_rbc.DataTransferLength;	// 返回傳輸的數據長度(字節)
	}
	else
	{
		if(GetRequestSense(MediumPtr, &SenseData))
			return NULL;
		else
		{	/* 這里分析出錯原因 */
			if((SenseData.ASC==0x3a)&&(SenseData.ASCQ==0x00))
			{/* MEDIUM NOT PRESENT */
				MediumPtr->BlockLengthInBytes = NULL;
				MediumPtr->LastLogicalBlookAddress = NULL;
			}
		}
	}
	return (0);								// 出錯返回0
}
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜私人影院| 欧洲精品在线观看| 欧美三级韩国三级日本一级| 日韩一区二区在线免费观看| 亚洲少妇30p| 国产九色sp调教91| 欧美在线视频你懂得| 欧美激情一区二区三区蜜桃视频| 日日夜夜精品视频免费| 色综合中文字幕国产 | 国产精品欧美极品| 男女男精品视频网| 在线看日韩精品电影| 中文字幕欧美区| 国产一区在线视频| 欧美大片在线观看一区二区| 亚洲成人一区二区在线观看| 色菇凉天天综合网| 亚洲激情一二三区| 99在线精品视频| 中文字幕一区二区在线播放 | 国产午夜精品一区二区三区嫩草| 婷婷久久综合九色国产成人| 91麻豆文化传媒在线观看| 久久蜜臀精品av| 国产一区二区三区不卡在线观看| 91精品蜜臀在线一区尤物| 香蕉成人啪国产精品视频综合网| 欧洲一区在线电影| 亚洲午夜久久久久中文字幕久| 91色婷婷久久久久合中文| 国产精品久久夜| 99麻豆久久久国产精品免费优播| 欧美激情中文不卡| 99视频精品在线| 自拍偷拍国产精品| 在线免费观看成人短视频| 一区二区日韩av| 欧美日韩国产bt| 蜜桃一区二区三区四区| 欧美一级黄色片| 韩国女主播成人在线| 欧美国产1区2区| 色激情天天射综合网| 午夜精品成人在线视频| 精品国产免费一区二区三区四区| 激情六月婷婷久久| 国产精品久久免费看| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 奇米精品一区二区三区在线观看 | 日本中文字幕不卡| 久久综合色鬼综合色| 成人综合在线观看| 亚洲乱码中文字幕| 日韩欧美自拍偷拍| 成人免费视频app| 亚洲国产精品久久久久婷婷884| 欧美日韩免费电影| 久久精品国产免费| 国产精品久久久久9999吃药| 在线观看国产91| 精品影视av免费| 亚洲三级在线观看| 91.com视频| 国产成人精品免费网站| 夜夜精品视频一区二区| 日韩欧美国产午夜精品| eeuss鲁片一区二区三区在线看| 亚洲影视在线播放| 久久天天做天天爱综合色| 色诱视频网站一区| 国产乱码精品一区二区三区忘忧草 | 日韩精品1区2区3区| 国产日本欧美一区二区| 精品视频一区 二区 三区| 狠狠色狠狠色综合| 亚洲一区二区五区| 国产女主播视频一区二区| 欧美日韩精品免费| av不卡免费电影| 国产在线视频不卡二| 亚洲一区二区三区四区五区中文| 久久久午夜精品理论片中文字幕| 一本久久a久久精品亚洲| 久久精品国产精品亚洲红杏| 亚洲国产一区在线观看| 亚洲国产成人在线| 久久综合九色综合欧美就去吻| 色8久久精品久久久久久蜜| 国产成人精品aa毛片| 秋霞电影网一区二区| 一区二区在线观看免费| 亚洲国产精品ⅴa在线观看| 日韩精品在线看片z| 欧美日韩亚洲另类| 91蜜桃在线观看| 成人av综合在线| 国产黑丝在线一区二区三区| 免费精品视频最新在线| 日韩成人dvd| 亚洲成av人片在www色猫咪| 亚洲欧美激情视频在线观看一区二区三区| 久久这里只有精品视频网| 日韩亚洲欧美高清| 538prom精品视频线放| 色乱码一区二区三区88| 91丝袜国产在线播放| 9i在线看片成人免费| 波多野结衣中文字幕一区 | 国产精品99精品久久免费| 日本女优在线视频一区二区| 日韩电影在线观看一区| 视频一区二区三区在线| 香蕉成人啪国产精品视频综合网| 亚洲国产精品久久不卡毛片| 亚洲一区二区三区四区五区黄| 亚洲欧美视频在线观看| 亚洲欧美韩国综合色| 亚洲精品欧美二区三区中文字幕| 亚洲欧洲日韩一区二区三区| 亚洲天天做日日做天天谢日日欢| 国产精品三级在线观看| 中文字幕制服丝袜成人av | 欧洲一区在线电影| 欧美日本视频在线| 日韩午夜在线影院| 亚洲精品在线观看网站| 国产亚洲欧美日韩日本| 国产精品传媒视频| 亚洲综合一区二区| 六月婷婷色综合| 高清不卡一二三区| 在线一区二区三区四区五区| 欧美丰满美乳xxx高潮www| 日韩三级免费观看| 国产精品乱码一区二区三区软件 | 免费成人你懂的| 国产综合一区二区| caoporm超碰国产精品| 欧美亚洲另类激情小说| 欧美高清www午色夜在线视频| 精品国产一区二区国模嫣然| 国产精品欧美极品| 日韩精品亚洲一区二区三区免费| 黄页视频在线91| 色综合 综合色| 日韩美女一区二区三区四区| 国产精品第13页| 日本一不卡视频| 丁香婷婷综合色啪| 欧美日韩大陆一区二区| 久久久亚洲综合| 一区二区成人在线视频| 精品综合久久久久久8888| proumb性欧美在线观看| 在线播放欧美女士性生活| 国产欧美日韩久久| 日本欧美一区二区在线观看| 99精品黄色片免费大全| 日韩欧美国产三级| 一区二区三区四区乱视频| 韩国v欧美v亚洲v日本v| 91极品美女在线| 中文字幕电影一区| 天堂久久一区二区三区| av中文字幕亚洲| 精品国产91久久久久久久妲己| 一区二区三区日韩精品视频| 黄色资源网久久资源365| 欧美男人的天堂一二区| 国产精品萝li| 国产高清久久久| 欧美成人性战久久| 亚洲大片免费看| 91论坛在线播放| 亚洲国产高清在线观看视频| 狠狠色伊人亚洲综合成人| 欧美日韩国产免费一区二区 | 欧美影院精品一区| 国产精品久久久久天堂| 国产精品亚洲一区二区三区妖精| 69久久99精品久久久久婷婷| 亚洲欧美激情插| 色综合中文字幕| 国产欧美日韩久久| 国产伦精品一区二区三区视频青涩 | 色综合天天天天做夜夜夜夜做| 久久久久99精品一区| 久久99九九99精品| 日韩精品中文字幕一区二区三区| 婷婷丁香激情综合| 欧美乱熟臀69xxxxxx| 五月婷婷久久丁香| 6080日韩午夜伦伦午夜伦| 午夜欧美2019年伦理| 欧美日韩国产经典色站一区二区三区| 一区二区三区欧美视频| 色av一区二区| 首页国产欧美日韩丝袜| 91精品蜜臀在线一区尤物|