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

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

?? shell.cpp

?? 小型的操作系統開發的原代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
		PrintAllKt(&g_pKThreadQueue[0]);
		goto __TERMINAL;
	}

	pCmdObj = FormParameterObj(pszPara);
	if(NULL == pCmdObj)
	{
		PrintLine("Can not allocate the resource to interpret the command.");
		goto __TERMINAL;
	}

	switch(pCmdObj->byFunctionLabel)
	{
	case 'i':
	case 0:
		bResult = Str2Hex(pCmdObj->Parameter[0],&dwID);
		if(FALSE == bResult)
		{
			PrintLine("Can not interpret the command's parameter.");
			goto __TERMINAL;
		}
		PrintKtByID(dwID);
		break;
	case '?':
	default:
		KtViewUsage();
		break;
	}

__TERMINAL:
	if(NULL != pCmdObj)
		KMemFree((LPVOID)pCmdObj,KMEM_SIZE_TYPE_4K,4096);
	return;
}

//
//The helper functions,print out the usage information.
//

static VOID SendMsgUsage()
{
	PrintLine("    Usage :");
	PrintLine("      sendmsg kthread_id command [parameter1] [parameter2]");
	PrintLine("    Where :");
	PrintLine("      kthread_id  : Kernal thread ID.");
	PrintLine("      command     : Command number.");
	PrintLine("      parameter1  : The first parameter(optional).");
	PrintLine("      parameter2  : The second parameter(optional).");
}

VOID SendMsgHandler(LPSTR pszPara)
{
	__CMD_PARA_OBJ*          pCmdObj       = NULL;
	DWORD                    dwID          = 0L;
	__KTHREAD_MSG            msg;
	BOOL                     bResult       = FALSE;
	DWORD                    dwCommand     = 0L;
	__KTHREAD_CONTROL_BLOCK* pControlBlock = NULL;

	if((NULL == pszPara) || (0 == *pszPara))
	{
		SendMsgUsage();
		goto __TERMINAL;
	}

	pCmdObj = FormParameterObj(pszPara);
	if(NULL == pCmdObj)
	{
		PrintLine("Can not allocate resource to interpret the command.");
		goto __TERMINAL;
	}

	if(pCmdObj->byParameterNum < 2)
	{
		PrintLine("Miss command code.");
		goto __TERMINAL;
	}

	bResult = Str2Hex(pCmdObj->Parameter[0],&dwID);
	if((FALSE == bResult)
		|| (dwID < 1)
		|| (dwID > MAX_KTHREAD_NUM))
	{
		PrintLine("Invalid kernal thread ID.");
		goto __TERMINAL;
	}

	pControlBlock = GetKThreadControlBlock(dwID);
	if(NULL == pControlBlock)
	{
		PrintLine("The kernal thread is not exist.");
		goto __TERMINAL;
	}

	bResult = Str2Hex(pCmdObj->Parameter[1],&dwCommand);
	if(FALSE == bResult)
	{
		PrintLine("Invalid command code.");
		goto __TERMINAL;
	}

	switch(pCmdObj->byParameterNum)
	{
	case 2:                               //No parameter.
		msg.wCommand   = LOWORD(dwCommand);
		msg.dwParam_01 = 0L;
		msg.dwParam_02 = 0L;
		KtSendMessage(pControlBlock,&msg);
		break;
	case 3:                               //With one parameter.
		msg.wCommand   = LOWORD(dwCommand);
		bResult        = Str2Hex(pCmdObj->Parameter[2],&msg.dwParam_01);
		if(FALSE == bResult)
		{
			PrintLine("Invalid parameter.");
			break;
		}
		msg.dwParam_02 = 0L;
		KtSendMessage(pControlBlock,&msg);
		break;
	case 4:                               //With two parameter.
	default:
		msg.wCommand   = LOWORD(dwCommand);
		bResult        = Str2Hex(pCmdObj->Parameter[2],&msg.dwParam_01);
		if(FALSE == bResult)
		{
			PrintLine("Invalid parameter.");
			break;
		}
		bResult        = Str2Hex(pCmdObj->Parameter[3],&msg.dwParam_02);
		if(FALSE == bResult)
		{
			PrintLine("Invalid parameter.");
			break;
		}
		KtSendMessage(pControlBlock,&msg);
		break;
	}
__TERMINAL:
	if(NULL != pCmdObj)
		KMemFree((LPVOID)pCmdObj,KMEM_SIZE_TYPE_4K,4096);
	return;
}

//
//Memview handler.
//
VOID MemViewHandler(LPSTR pszCmd)
{
	__CMD_PARA_OBJ* pParaObj   = NULL;
	DWORD dwIndex              = 0x00000000;
	DWORD dwStartAddress       = 0x00000000;  //Local variables defination.
	DWORD bResult              = FALSE;
	DWORD dwNumber             = 0x00000000;
	DWORD i                    = 0x00000000;
	BYTE  memBuffer[12];

	if(0 == *pszCmd)
	{
__PRINT_USAGE:
		PrintLine("    Usage : View a block memory's content.");
		PrintLine("    memview -k[u] [process_id] start_mem_addr number");
		PrintLine("    Where :");
		PrintLine("      -k : View the kernal mode memory content.");
		PrintLine("      -u : View the user mode memory content.");
		PrintLine("      process_id : The process to be viewed.");
		PrintLine("      start_mem_addr : The start address of the memory be viewed.");
		PrintLine("      number : How many double word's memory to be viewed.");
		goto __TERMINAL;
	}

	pParaObj = FormParameterObj(pszCmd);    //Form the command parameter object by
	                                        //the parameter pszCmd.

	switch(pParaObj->byFunctionLabel)
	{
	case 0:                                 //If no function label,default to kernal memory
		                                    //view.
		//break;
	case 'k':
		bResult = Str2Hex(pParaObj->Parameter[0],&dwStartAddress);  //Convert tht first parameter
		                                                            //from string to hex number.
		if(FALSE == bResult)
		{
			PrintLine("Can not convert the first parameter to hex number.");
			break;
		}
		bResult = Str2Hex(pParaObj->Parameter[1],&dwNumber);  //Convert the second parameter
		                                                      //from string to hex number.
		if(FALSE == bResult)
		{
			PrintLine("Can not convert the second parameter to hex number.");
			break;
		}

		if(dwStartAddress + dwNumber * 4 > 16 * 1024 * 1024)
		{
			PrintLine("The memory block you want to view is exceed the kernal space.");
			break;
		}

		PrintLine("    ---------- ** Mem Content ** ----------    ");
		ChangeLine();
		GotoHome();
		for(i = 0;i < dwNumber;i ++)
		{
			PrintStr("        0x");
			Hex2Str(dwStartAddress,memBuffer);
			PrintStr(memBuffer);
			PrintStr("      0x");
			Hex2Str(*(DWORD*)dwStartAddress,memBuffer);
			PrintStr(memBuffer);
			ChangeLine();
			GotoHome();
			dwStartAddress += 4;
		}
		break;
	case 'u':
		PrintLine("Does not support now.");
		break;
	default:
		goto __PRINT_USAGE;
		break;
	}
	/*while(pParaObj)
	{
		for(dwIndex = 0;dwIndex < (DWORD)pParaObj->byParameterNum;dwIndex ++)
		{
			ConvertToUper(pParaObj->Parameter[dwIndex]);
			PrintLine(pParaObj->Parameter[dwIndex]);
		}
		pParaObj = pParaObj->pNext;
	}*/

__TERMINAL:
	if(NULL != pParaObj)
		KMemFree((LPVOID)pParaObj,KMEM_SIZE_TYPE_4K,4096);
	return;
}

//LPSTR g_pszTest = "Hello,China!!";

#define KMSG_USER_SUM 0x00FF
#define KMSG_USER_ACC 0x00FE

static __KTHREAD_CONTROL_BLOCK* g_pThread1ControlBlock = NULL;

VOID ShellThread1(LPVOID)
{
	static DWORD dwSum = 0L;
	__KTHREAD_CONTROL_BLOCK* pControlBlock = g_pThread1ControlBlock;
	__KTHREAD_MSG            msg;
	DWORD                    dwTmp1        = 0L;
	DWORD                    dwTmp2        = 0L;
	BYTE                     Buffer[32];

	while(TRUE)
	{
		if(KtGetMessage(pControlBlock,&msg))
		{
			switch(msg.wCommand)
			{
			case KMSG_USER_SUM:
				dwTmp1 = msg.dwParam_01;
				dwTmp2 = msg.dwParam_02;
				dwSum  = dwTmp1 + dwTmp2;
				Int2Str(dwSum,Buffer);
				PrintLine("The sum is : ");
				PrintStr(Buffer);
				break;
			case KMSG_USER_ACC:
				dwTmp1 = msg.dwParam_01;
				dwSum  = 0L;
				for(dwTmp2 = 0;dwTmp2 < dwTmp1;dwTmp2 ++)
				{
					dwSum += dwTmp2 + 1;
				}
				PrintLine("The accumulated result is : ");
				Int2Str(dwSum,Buffer);
				PrintStr(Buffer);
				break;
			default:
				break;
			}
		}
	}
}

VOID ShellThread2(LPVOID)
{
	static DWORD dwThread2Counter = 0x0000;
	while(TRUE)
	{
		dwThread2Counter ++;
		if(0 == dwThread2Counter % 0x00FFFFFF)
		{
			PrintLine("Kernal thread is running : kernal-thread-2.");
			dwThread2Counter = 0;
		}
	}
}

DWORD ShellThread3(LPVOID)
{
	DWORD dwCounter = 1L;
	while(dwCounter < 10)
	{
		dwCounter ++;
		PrintLine("Thread 3 is running,increment the dwCounter.");
	}
	return 0L;
}

__EVENT* lpWriteEvent  = NULL;
__EVENT* lpReadEvent   = NULL;

DWORD ReadThread(LPVOID)
{
	while(TRUE)
	{
		lpReadEvent->WaitForThisObject((__COMMON_OBJECT*)lpReadEvent);
		PrintLine("Read resource from shared pool.");
		lpReadEvent->ResetEvent((__COMMON_OBJECT*)lpReadEvent);
		lpWriteEvent->SetEvent((__COMMON_OBJECT*)lpWriteEvent);
	}
	return 0L;
}

DWORD WriteThread(LPVOID)
{
	while(TRUE)
	{
		lpWriteEvent->WaitForThisObject((__COMMON_OBJECT*)lpWriteEvent);
		PrintLine("Write resource to shared pool.");
		lpWriteEvent->ResetEvent((__COMMON_OBJECT*)lpWriteEvent);
		lpReadEvent->SetEvent((__COMMON_OBJECT*)lpReadEvent);
	}
	return 0L;
}

DWORD SleepThread(LPVOID)
{
	DWORD dwSleepCount = 10L;

	while(dwSleepCount)
	{
		PrintLine("I am sleeping thread.");
		KernelThreadManager.Sleep((__COMMON_OBJECT*)&KernelThreadManager,500);
		dwSleepCount --;
	}
	return 0L;
}

DWORD EchoRoutine(LPVOID)
{
	__KERNEL_THREAD_MESSAGE Msg;
	BYTE                    bt;
	WORD                    wr = 0x0700;
	while(TRUE)
	{
		if(GetMessage(&Msg))
		{
			if(Msg.wCommand == MSG_KEY_DOWN)
			{
				bt = LOBYTE(LOWORD(Msg.dwParam));
				if(('q' == bt) || ('x' == bt))
					goto __TERMINAL;
				wr += bt;
				PrintCh(wr);
				wr = 0x0700;
			}
		}
	}
__TERMINAL:
	return 0L;
}

__MUTEX*    lpMutex   = NULL;
__MAILBOX*  lpMailBox = NULL;
__EVENT*    lpEvent   = NULL;

static DWORD SynThread1(LPVOID)
{
	__KERNEL_THREAD_MESSAGE Msg;
	BYTE                    bt;

	while(TRUE)
	{
		if(GetMessage(&Msg))
		{
			if(Msg.wCommand == MSG_KEY_DOWN)
			{
				PrintLine("Set event object.");
				lpEvent->SetEvent((__COMMON_OBJECT*)lpEvent);
				bt = LOBYTE(LOWORD(Msg.dwParam));
				if('q' == bt)
					return 0L;
			}
		}
	}
	return 0L;
}

static DWORD SynThread2(LPVOID)
{
	DWORD           dwRetVal = 0L;

	while(TRUE)
	{
		dwRetVal = lpEvent->WaitForThisObjectEx((__COMMON_OBJECT*)lpEvent,
			300);
		switch(dwRetVal)
		{
		case OBJECT_WAIT_RESOURCE:
			PrintLine("I am first thread,wait a resource.");
			lpEvent->ResetEvent((__COMMON_OBJECT*)lpEvent);
			break;
		case OBJECT_WAIT_TIMEOUT:
			PrintLine("I am first thread,wait time out...");
			break;
		}
	}
	return 0L;
}

static DWORD SynThread3(LPVOID)
{	
	DWORD           dwRetVal = 0L;

	while(TRUE)
	{
		dwRetVal = lpEvent->WaitForThisObjectEx((__COMMON_OBJECT*)lpEvent,
			600);
		switch(dwRetVal)
		{
		case OBJECT_WAIT_RESOURCE:
			PrintLine("I am second thread,wait a resource.");
			lpEvent->ResetEvent((__COMMON_OBJECT*)lpEvent);
			break;
		case OBJECT_WAIT_TIMEOUT:
			PrintLine("I am second thread,wait time out...");
			break;
		}
	}
	return 0L;
}


VOID TestHandler(LPSTR)
{
	LPVOID      lpAddr[16];
	BYTE        Buffer[12];
	int         i = 0;

	PrintLine("Begin testing...");
	for(int j = 0;j < 1000;j ++)
	{
		for(i = 0;i < 16;i ++)
		{
			lpAddr[i] = malloc(i * 8192);
			//Hex2Str((DWORD)lpAddr[i],Buffer);
			//PrintLine(Buffer);
		}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产视频一区不卡| 欧美日韩高清在线| 中文天堂在线一区| 91一区二区在线观看| 亚洲一区二区三区精品在线| 欧美精品18+| 久久99国内精品| 国产亚洲精品中文字幕| av在线一区二区| 亚洲福利视频三区| 日韩欧美亚洲一区二区| 国产一区视频在线看| 国产精品美女久久久久aⅴ| 日本韩国一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 久久久午夜电影| 99久久er热在这里只有精品15 | 91麻豆精品国产91久久久更新时间| 亚洲二区视频在线| 亚洲精品在线网站| 99久久er热在这里只有精品15| 五月婷婷久久综合| 欧美极品少妇xxxxⅹ高跟鞋| 欧美日韩一区二区在线视频| 黄一区二区三区| 亚洲一区二区影院| 久久综合资源网| 91国产丝袜在线播放| 久久99精品国产麻豆婷婷| 国产精品久久久久久久浪潮网站| 欧美日韩午夜在线| 国产91精品精华液一区二区三区| 亚洲综合色丁香婷婷六月图片| 精品国产露脸精彩对白| 日本道精品一区二区三区| 国产一区二区三区黄视频| 亚洲va欧美va人人爽| 中文字幕av一区二区三区 | 在线不卡免费欧美| www.亚洲精品| 蜜臀av性久久久久蜜臀aⅴ| 亚洲男人天堂av| 久久奇米777| 欧美猛男gaygay网站| 99久久精品一区二区| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲一区二区三区国产| 国产精品久久久久久久久晋中 | 欧美三级一区二区| 国产成人小视频| 男女男精品网站| 亚洲高清久久久| 亚洲视频免费看| 国产午夜精品一区二区三区嫩草| 日韩一区二区三区高清免费看看| 在线免费观看日韩欧美| 99国产精品久久久久久久久久久| 国产精品66部| 久久激情综合网| 人人狠狠综合久久亚洲| 五月天激情小说综合| 亚洲综合久久av| 亚洲欧美日韩在线不卡| 国产精品电影一区二区| 国产欧美一区二区在线观看| 久久夜色精品一区| 久久久久久夜精品精品免费| 日韩精品一区二区三区视频播放| 在线91免费看| 日韩一卡二卡三卡四卡| 日韩一级免费观看| 91精品国产丝袜白色高跟鞋| 91精品婷婷国产综合久久竹菊| 欧美伊人精品成人久久综合97| 色老汉av一区二区三区| 欧美在线不卡一区| 欧美日韩国产美| 欧美日韩高清一区二区三区| 欧美日韩二区三区| 欧美一区二区三区免费视频 | 91麻豆.com| 91网站最新地址| 色爱区综合激月婷婷| 色综合久久久久综合| 在线观看亚洲精品视频| 欧美精品日韩综合在线| 91麻豆精品国产91久久久 | 亚洲国产经典视频| 国产精品视频免费看| 亚洲另类春色校园小说| 亚洲国产日韩精品| 三级一区在线视频先锋| 精品一区二区三区蜜桃| 国产 欧美在线| 色欧美88888久久久久久影院| 欧美无人高清视频在线观看| 日韩欧美在线123| 国产午夜精品福利| 亚洲婷婷在线视频| 日韩高清不卡一区二区三区| 精品在线一区二区| 成人性色生活片| 欧美日韩在线精品一区二区三区激情| 欧美视频你懂的| 精品成人在线观看| 最新国产精品久久精品| 亚洲观看高清完整版在线观看| 免费欧美日韩国产三级电影| 国产成人精品三级麻豆| 色综合久久久久网| 欧美精品一区二区三区四区 | 亚洲女人****多毛耸耸8| 婷婷开心激情综合| 国产91露脸合集magnet| 欧美性三三影院| 国产亚洲欧美日韩在线一区| 一区二区三区中文字幕电影| 精品制服美女久久| 欧美性淫爽ww久久久久无| 精品国产3级a| 亚洲综合清纯丝袜自拍| 国产成人亚洲精品狼色在线| 欧美日韩www| 中文一区二区完整视频在线观看 | 免费在线看一区| 91视频免费播放| xnxx国产精品| 五月激情六月综合| 91亚洲精品乱码久久久久久蜜桃| 欧美www视频| 五月婷婷色综合| 97se亚洲国产综合自在线| 欧美大肚乱孕交hd孕妇| 亚洲综合成人网| 成人91在线观看| 欧美精品一区二区精品网| 亚洲国产精品久久久男人的天堂| 成人一二三区视频| 精品久久久久久久久久久院品网| 亚洲国产日韩综合久久精品| heyzo一本久久综合| 久久精品一区二区三区不卡| 日韩av不卡在线观看| 在线视频观看一区| 亚洲欧洲国产专区| 国产.欧美.日韩| 久久久久久久综合狠狠综合| 免费高清成人在线| 3d成人h动漫网站入口| 一区二区三区蜜桃| 色吊一区二区三区| 亚洲欧美二区三区| 91小视频在线| 自拍偷拍亚洲欧美日韩| 福利电影一区二区三区| 久久欧美中文字幕| 精品一区二区三区视频| 日韩欧美一级精品久久| 午夜精品福利一区二区蜜股av| 欧美午夜在线一二页| 一区二区三区精品视频| 色偷偷成人一区二区三区91| 国产精品久久久久久久久动漫| 国产成人一级电影| 国产精品卡一卡二卡三| 成人综合婷婷国产精品久久蜜臀 | 欧美一级高清片| 免费看日韩精品| 日韩一级黄色片| 久草在线在线精品观看| 久久精品一级爱片| 国产v综合v亚洲欧| 国产精品成人一区二区三区夜夜夜 | 日韩午夜三级在线| 免费xxxx性欧美18vr| 日韩一级黄色大片| 国产在线乱码一区二区三区| 久久天天做天天爱综合色| 国产精品99久久久久久久女警 | 国产欧美精品一区二区色综合朱莉| 黑人巨大精品欧美黑白配亚洲| 亚洲精品一线二线三线| 国产成人精品一区二区三区网站观看| 国产精品免费久久久久| 色网站国产精品| 欧美aaaaaa午夜精品| 国产欧美一区二区三区鸳鸯浴| 成人av在线网| 亚洲图片欧美综合| 日韩一卡二卡三卡国产欧美| 国产美女一区二区三区| 自拍偷自拍亚洲精品播放| 欧美视频一区二区三区在线观看| 美脚の诱脚舐め脚责91| 亚洲国产精品成人久久综合一区| 在线免费一区三区| 精品一区二区三区免费播放| 18涩涩午夜精品.www| 在线电影一区二区三区| 国产白丝网站精品污在线入口|