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

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

?? shell.cpp

?? 小型的操作系統開發的原代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:

	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;
}

static DWORD CriticalThread1(LPVOID)
{
	DWORD dwCounter = 0;
	while(TRUE)
	{
		dwCounter ++;
		if(0xFFFFFFFF == dwCounter)
		{
			//PrintLine("I am critical kernel thread 1.");
			dwCounter = 0;
			//break;
		}
	}
	return 0L;
}

static DWORD CriticalThread2(LPVOID)
{
	DWORD dwCounter = 0;
	while(TRUE)
	{
		dwCounter ++;
		if(0xFFFFFFFF == dwCounter)
		{
			//PrintLine("I am critical kernel thread 2.");
			dwCounter = 0;
			//break;
		}
	}
	return 0L;
}

static DWORD CriticalThread3(LPVOID)
{
	DWORD dwCounter = 0;
	while(TRUE)
	{
		dwCounter ++;
		if(0xFFFFFFFF == dwCounter)
		{
			//PrintLine("I am critical kernel thread 3.");
			dwCounter = 0;
			//break;
		}
	}
	return 0L;
}

static DWORD HighThread(LPVOID)
{
	DWORD dwCounter = 0;
	while(TRUE)
	{
		dwCounter ++;
		if(0xFFFFFFFF == dwCounter)
		{
			//PrintLine("I am high priority kernel thread.");
			dwCounter = 0;
			//break;
		}
	}
	return 0L;
}

static DWORD LazyPig(LPVOID)
{
	DWORD dwRice = 0;
	while(TRUE)
	{
		while(TRUE)
		{
			dwRice ++;
			if(0xFFFFFFFF == dwRice)
			{
				dwRice = 0;
				break;
			}
		}
		KernelThreadManager.Sleep((__COMMON_OBJECT*)&KernelThreadManager,1000);  //Sleep 1s.
	}
	return 0L;
}

VOID TestHandler(LPSTR)
{
	__KERNEL_THREAD_OBJECT*  lpCritical1 = NULL;
	__KERNEL_THREAD_OBJECT*  lpCritical2 = NULL;
	__KERNEL_THREAD_OBJECT*  lpCritical3 = NULL;
	__KERNEL_THREAD_OBJECT*  lpHigh      = NULL;

	lpCritical1 = KernelThreadManager.CreateKernelThread(
		(__COMMON_OBJECT*)&KernelThreadManager,
		0L,
		KERNEL_THREAD_STATUS_READY,
		PRIORITY_LEVEL_LOW,
		CriticalThread1,
		NULL,
		NULL,
		"Test thread1");

	lpCritical2 = KernelThreadManager.CreateKernelThread(
		(__COMMON_OBJECT*)&KernelThreadManager,
		0L,
		KERNEL_THREAD_STATUS_READY,
		PRIORITY_LEVEL_LOW,
		CriticalThread2,
		NULL,
		NULL,
		"Test thread2");

	lpCritical3 = KernelThreadManager.CreateKernelThread(
		(__COMMON_OBJECT*)&KernelThreadManager,
		0L,
		KERNEL_THREAD_STATUS_READY,
		PRIORITY_LEVEL_LOW,
		CriticalThread3,
		NULL,
		NULL,
		"Test thread3");

	lpHigh = KernelThreadManager.CreateKernelThread(
		(__COMMON_OBJECT*)&KernelThreadManager,
		0L,
		KERNEL_THREAD_STATUS_READY,
		PRIORITY_LEVEL_LOW,
		HighThread,
		NULL,
		NULL,
		"Test thread4");

	KernelThreadManager.CreateKernelThread(
		(__COMMON_OBJECT*)&KernelThreadManager,
		0L,
		KERNEL_THREAD_STATUS_READY,
		PRIORITY_LEVEL_NORMAL,
		LazyPig,
		NULL,
		NULL,
		"Lazy pig");

	/*
	lpCritical1->WaitForThisObject((__COMMON_OBJECT*)lpCritical1);
	lpCritical2->WaitForThisObject((__COMMON_OBJECT*)lpCritical2);
	lpCritical3->WaitForThisObject((__COMMON_OBJECT*)lpCritical3);
	lpHigh->WaitForThisObject((__COMMON_OBJECT*)lpHigh);

	KernelThreadManager.DestroyKernelThread((__COMMON_OBJECT*)&KernelThreadManager,
		(__COMMON_OBJECT*)lpCritical1);
	KernelThreadManager.DestroyKernelThread((__COMMON_OBJECT*)&KernelThreadManager,
		(__COMMON_OBJECT*)lpCritical2);
	KernelThreadManager.DestroyKernelThread((__COMMON_OBJECT*)&KernelThreadManager,
		(__COMMON_OBJECT*)lpCritical3);
	KernelThreadManager.DestroyKernelThread((__COMMON_OBJECT*)&KernelThreadManager,
		(__COMMON_OBJECT*)lpHigh);
		*/
}

VOID IoCtrlApp(LPSTR)
{
	__KERNEL_THREAD_OBJECT*    lpIoCtrlThread    = NULL;

	lpIoCtrlThread = KernelThreadManager.CreateKernelThread(
		(__COMMON_OBJECT*)&KernelThreadManager,
		0L,
		KERNEL_THREAD_STATUS_READY,
		PRIORITY_LEVEL_NORMAL,
		IoCtrlStart,
		NULL,
		NULL,
		"IO CTRL");
	if(NULL == lpIoCtrlThread)    //Can not create the IO control thread.
	{
		PrintLine("Can not create IO control thread.");
		return;
	}

	DeviceInputManager.SetFocusThread((__COMMON_OBJECT*)&DeviceInputManager,
		(__COMMON_OBJECT*)lpIoCtrlThread);    //Set the current focus to IO control
	                                          //application.

	lpIoCtrlThread->WaitForThisObject((__COMMON_OBJECT*)lpIoCtrlThread);  //Block the shell
	                                                                      //thread until
	                                                                      //the IO control
	                                                                      //application end.
	KernelThreadManager.DestroyKernelThread((__COMMON_OBJECT*)&KernelThreadManager,
		(__COMMON_OBJECT*)lpIoCtrlThread);  //Destroy the thread object.

}

//
//System diag application's shell start code.
//

VOID SysDiagApp(LPSTR)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品少妇一区二区三区视频免付费| 欧美日韩高清在线播放| 欧美日韩国产片| 国产日韩精品一区| 日本成人在线网站| 色94色欧美sute亚洲线路一ni| 精品少妇一区二区三区日产乱码 | 国产精品灌醉下药二区| 日韩不卡免费视频| 色综合色综合色综合 | 91亚洲精品乱码久久久久久蜜桃| 欧美一区二区三区四区在线观看 | 中文字幕在线观看一区二区| 国产主播一区二区三区| 欧美绝品在线观看成人午夜影视| 一区在线播放视频| 国产麻豆精品视频| 欧美一区二区三区四区高清| 一区二区欧美精品| a在线欧美一区| 国产女同性恋一区二区| 久久成人免费网站| 91精品国产综合久久精品app| 一区二区三区四区亚洲| 成人激情免费电影网址| 久久精品一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲天堂2014| 成人avav在线| 欧美国产一区视频在线观看| 国内精品久久久久影院色| 欧美一二三四在线| 日本一不卡视频| 日韩一区二区在线观看视频| 午夜精品福利一区二区蜜股av | 麻豆成人av在线| 欧美一区二区三区成人| 日韩高清在线电影| 91精品国产综合久久精品性色 | 综合欧美亚洲日本| 波多野洁衣一区| 中文字幕一区二区日韩精品绯色| 成人免费不卡视频| |精品福利一区二区三区| 成人激情小说网站| 国产精品国产馆在线真实露脸| 成人激情黄色小说| 最新中文字幕一区二区三区| 99久久免费精品| 亚洲人成网站影音先锋播放| 色综合久久综合网欧美综合网| 《视频一区视频二区| 日本精品视频一区二区| 一区二区三区在线视频免费观看 | 丁香六月综合激情| 亚洲国产精品精华液ab| 成人av午夜电影| 亚洲欧美偷拍卡通变态| 欧美中文字幕一二三区视频| 亚洲6080在线| 日韩欧美视频一区| 国产成人精品免费在线| 中文字幕一区二区三区不卡在线| 日本精品视频一区二区| 日韩在线卡一卡二| 精品日韩成人av| 成人黄色软件下载| 亚洲激情在线播放| 欧美一二三在线| 国产二区国产一区在线观看| 最新热久久免费视频| 欧美日韩一区二区三区在线看| 美美哒免费高清在线观看视频一区二区| 久久欧美中文字幕| 99久久婷婷国产精品综合| 亚洲国产欧美一区二区三区丁香婷| 日韩欧美一级片| www.成人在线| 五月天网站亚洲| 久久综合色天天久久综合图片| 成人av高清在线| 天堂一区二区在线| 国产欧美精品日韩区二区麻豆天美| 日本高清成人免费播放| 蜜桃91丨九色丨蝌蚪91桃色| 中文字幕欧美国产| 精品视频免费在线| 国产精品亚洲第一区在线暖暖韩国| 综合亚洲深深色噜噜狠狠网站| 69成人精品免费视频| 国产91精品精华液一区二区三区 | 青青草97国产精品免费观看无弹窗版| 久久色.com| 色香色香欲天天天影视综合网| 蜜臀久久久久久久| 国产精品女同互慰在线看| 欧洲一区在线观看| 国产麻豆精品在线观看| 亚洲图片欧美视频| 日本一区二区三区电影| 欧美二区三区91| 99久久夜色精品国产网站| 一级特黄大欧美久久久| 久久蜜桃av一区二区天堂| 欧美中文字幕不卡| 成人性生交大片免费看视频在线 | 亚洲一区二区三区不卡国产欧美| 2014亚洲片线观看视频免费| 91麻豆国产福利在线观看| 狠狠网亚洲精品| 亚洲一区二区三区四区在线观看 | 亚洲大型综合色站| 国产精品欧美极品| 精品久久久久一区二区国产| 色香蕉成人二区免费| 国产成人av电影免费在线观看| 亚洲va欧美va天堂v国产综合| 国产欧美一二三区| 欧美一区二区私人影院日本| 色综合久久九月婷婷色综合| 国产精品资源在线| 免费成人在线网站| 亚洲一区在线播放| 中文字幕一区不卡| 久久久久国产免费免费| 日韩一区二区免费在线电影| 欧美日韩中文精品| 99精品视频一区| 国产98色在线|日韩| 免费成人在线观看| 五月天中文字幕一区二区| 亚洲伦理在线精品| 欧美国产日韩亚洲一区| 精品日韩在线观看| 88在线观看91蜜桃国自产| 色综合久久综合网97色综合| 春色校园综合激情亚洲| 久久 天天综合| 日本在线不卡一区| 亚洲成人免费在线| 亚洲在线中文字幕| 一区二区三区高清| 亚洲情趣在线观看| 亚洲国产精品av| 国产欧美精品一区| 国产偷国产偷亚洲高清人白洁| 日韩欧美黄色影院| 欧美一区二区三区视频免费| 欧美日本精品一区二区三区| 在线中文字幕一区二区| 日本韩国精品一区二区在线观看| a亚洲天堂av| 97久久精品人人做人人爽50路| 成人免费福利片| 不卡电影一区二区三区| 不卡的电影网站| 不卡免费追剧大全电视剧网站| 成人app下载| thepron国产精品| 成人av免费网站| 色综合 综合色| 97精品久久久午夜一区二区三区 | 激情五月婷婷综合网| 国内欧美视频一区二区| 国产精品一区二区果冻传媒| 国产精品中文有码| 成人丝袜视频网| av午夜精品一区二区三区| 91视频.com| 欧美综合亚洲图片综合区| 欧美日韩一区视频| 欧美一区二区在线视频| 日韩欧美国产综合| xnxx国产精品| 国产精品区一区二区三区| 一区免费观看视频| 亚洲图片自拍偷拍| 捆绑调教一区二区三区| 国产电影一区在线| 成人h精品动漫一区二区三区| 9色porny自拍视频一区二区| 日本乱人伦一区| 欧美日韩精品系列| 6080国产精品一区二区| 精品久久久久久久久久久久久久久 | 久久伊人中文字幕| 国产精品国产自产拍高清av王其| 亚洲欧美日韩一区| 亚洲最大色网站| 久久99久久99| av中文字幕不卡| 欧美日韩一区二区欧美激情| 精品国产乱码久久久久久夜甘婷婷| 国产亚洲一二三区| 亚洲免费资源在线播放| 偷窥少妇高潮呻吟av久久免费| 激情图片小说一区| 一本色道久久加勒比精品| 欧美一区二区三区思思人| 欧美激情一区二区三区四区|