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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? blcommon.c

?? GEC2410開(kāi)發(fā)板嵌如入式操作系統(tǒng)WinCE5.0
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.

Module Name:
    blcommon.c

Abstract:
    Bootloader common main module. This file contains the C BootloaderMain
    function for the boot loader.    NOTE: The firmware "entry" point (the real
    entry point is _EntryPoint in init assembler file.

    The Windows CE boot loader is the code that is executed on a Windows CE
    development system at power-on reset and loads the Windows CE
    operating system. The boot loader also provides code that monitors
    the behavior of a Windows CE platform between the time the boot loader
    starts running and the time the full operating system debugger is
    available. Windows CE OEMs are supplied with sample boot loader code
    that runs on a particular development platform and CPU.

Functions:


Notes:

--*/
#include <windows.h>
#include <halether.h>
#include <blcommon.h>

#ifdef SIMULATOR
extern void CleanExit(DWORD dwExitCode);
#define SPIN_FOREVER        CleanExit(42)
#else
#define SPIN_FOREVER        while (1)
#endif

ROMHDR * volatile const pTOC = (ROMHDR *)-1;     // Gets replaced by RomLoader with real address
static ROMHDR romhdr;
static MultiBINInfo g_MultiBINInfo;

static BOOL KernelRelocate (ROMHDR *const pTOC);
static BOOL DownloadImage (LPDWORD pdwImageStart, LPDWORD pdwImageLength, LPDWORD pdwLaunchAddr);
static BOOL IsKernelRegion(DWORD dwRegionStart, DWORD dwRegionLength);

#define CURRENT_VERSION_MAJOR       1
#define CURRENT_VERSION_MINOR       0

const unsigned char NKSignon[] = {
    "\nMicrosoft Windows CE Ethernet Bootloader Common Library Version %d.%d Built "
        __DATE__ " " __TIME__ "\r\n"
    "Copyright (c) 2000-2001  Microsoft Corporation\r\n"
};

DWORD g_dwROMOffset;

PFN_OEMVERIFYMEMORY    g_pOEMVerifyMemory;
PFN_OEMREPORTERROR     g_pOEMReportError;
PFN_OEMCHECKSIGNATURE  g_pOEMCheckSignature;
PFN_OEMMULTIBINNOTIFY    g_pOEMMultiBINNotify;


static void HALT (DWORD dwReason)
{
    if (g_pOEMReportError) {
        g_pOEMReportError (dwReason, 0);
    }
    SPIN_FOREVER;
}


void BootloaderMain (void)
{
    ROMHDR *pRomHdr = NULL;  // pTOC for NK image. MUST COPY IT OR CLEANBOOT may erase it
    DWORD dwAction, dwpToc;
    DWORD dwImageStart = 0, dwImageLength = 0, dwLaunchAddr = 0;
    BOOL bDownloaded = FALSE;
#ifndef SIMULATOR
    // relocate globals to RAM
    if (!KernelRelocate (pTOC)) {
        // spin forever
        HALT (BLERR_KERNELRELOCATE);
    }
#endif
    // (1) Init debug support. We can use OEMWriteDebugString afterward.
    if (!OEMDebugInit ()) {
        // spin forever
        HALT (BLERR_DBGINIT);
    }

    // output banner
    EdbgOutputDebugString (NKSignon, CURRENT_VERSION_MAJOR, CURRENT_VERSION_MINOR);

    // (3) initialize platform (clock, drivers, transports, etc)
    if (!OEMPlatformInit ()) {
        // spin forever
        HALT (BLERR_PLATINIT);
    }

    // system ready, preparing for download
    EdbgOutputDebugString ("System ready!\r\nPreparing for download...\r\n");

    // (4) call OEM specific pre-download function
    switch (dwAction = OEMPreDownload ()) {
    case BL_DOWNLOAD:
        // (5) download image
        if (!DownloadImage (&dwImageStart, &dwImageLength, &dwLaunchAddr)) {
            // error already reported in DownloadImage
            SPIN_FOREVER;
        }
        bDownloaded = TRUE;

		if (dwImageStart) {
			// Check for pTOC signature ("CECE") here, after image in place
			if (*(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart + ROM_SIGNATURE_OFFSET) == ROM_SIGNATURE) {
				EdbgOutputDebugString("Found pTOC signature.\n");
			} else {
				EdbgOutputDebugString ("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n");
				EdbgOutputDebugString ("! ERROR: Did not find pTOC signature.  ABORTING. !\r\n");
				EdbgOutputDebugString ("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n");

				// If no signature, we're going to fail anyway, so loop forever
				HALT (BLERR_SIGNATURE);
			}

			dwpToc = *(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart + ROM_SIGNATURE_OFFSET + sizeof(ULONG));
			// need to map the content again since the pointer is going to be in a fixup address
			dwpToc = (DWORD) OEMMapMemAddr (dwImageStart, dwpToc);
			// NOTE: MUST COPY or a CLEAN_BOOT flag will erase it
			memcpy (pRomHdr = &romhdr, (LPVOID) dwpToc, sizeof(ROMHDR));

			EdbgOutputDebugString ("ROMHDR at Address %Xh\r\n", dwImageStart + ROM_SIGNATURE_OFFSET + sizeof (DWORD)); // right after signature
			EdbgOutputDebugString ("RomHdr.ulRAMStart=%Xh RomHdr.physfirst=%Xh.\r\n", romhdr.ulRAMStart, romhdr.physfirst);
		}

        // fall through
    case BL_JUMP:
        // Before jumping to the image, optionally check the image signature.
        if (g_pOEMCheckSignature && dwImageStart)
        {
            if (!g_pOEMCheckSignature(dwImageStart, g_dwROMOffset, dwLaunchAddr, bDownloaded))
                HALT(BLERR_WHQL_SIGNATURE);
        }
        // (5) final call to launch the image. never returned
        OEMLaunch (dwImageStart, dwImageLength, dwLaunchAddr, pRomHdr);
        // should never return
        // fall through
    default:
        // ERROR! spin forever
        HALT (BLERR_INVALIDCMD);
    }
}


//
// KernelRelocate: move global variables to RAM
//
static BOOL KernelRelocate (ROMHDR *const pTOC)
{
    ULONG loop;
    COPYentry *cptr;
    if (pTOC == (ROMHDR *const) -1) {
        return FALSE; // spin forever!
    }
    // This is where the data sections become valid... don't read globals until after this
    for (loop = 0; loop < pTOC->ulCopyEntries; loop++) {
        cptr = (COPYentry *)(pTOC->ulCopyOffset + loop*sizeof(COPYentry));
        if (cptr->ulCopyLen)
            memcpy((LPVOID)cptr->ulDest,(LPVOID)cptr->ulSource,cptr->ulCopyLen);
        if (cptr->ulCopyLen != cptr->ulDestLen)
            memset((LPVOID)(cptr->ulDest+cptr->ulCopyLen),0,cptr->ulDestLen-cptr->ulCopyLen);
    }
    return TRUE;
}

static BOOL VerifyChecksum (DWORD cbRecord, LPBYTE pbRecord, DWORD dwChksum)
{
    // Check the CRC
    DWORD dwCRC = 0;
    DWORD i;
    for (i = 0; i < cbRecord; i++)
        dwCRC += *pbRecord ++;

    if (dwCRC != dwChksum)
        EdbgOutputDebugString ("ERROR: Checksum failure (expected=0x%x  computed=0x%x)\r\n", dwChksum, dwCRC);

    return dwCRC == dwChksum;
}

#define BL_HDRSIG_SIZE		7
static BOOL DownloadImage (LPDWORD pdwImageStart, LPDWORD pdwImageLength, LPDWORD pdwLaunchAddr)
{
    BYTE hdr[BL_HDRSIG_SIZE];
    DWORD dwRecLen, dwRecChk, dwRecAddr;
    BOOL fIsFlash;
    LPBYTE lpDest;
    int nPkgNum = 0;
	BYTE nNumRegions = 1;
	DWORD dwImageStart, dwImageLength;

	*pdwImageStart = *pdwImageLength = *pdwLaunchAddr = 0;

	do
	{
		// read the 7 byte "magic number"
		if (!OEMReadData (BL_HDRSIG_SIZE, hdr)) {
			EdbgOutputDebugString ("\r\nUnable to read image signature.\r\n");
			HALT (BLERR_MAGIC);
			return FALSE;
		}

		// check for multi-bin information packet.
		if (!memcmp (hdr, "X000FF\x0A", BL_HDRSIG_SIZE)) {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女视频黄久久| 色综合中文字幕国产| 亚洲免费在线视频| 久久精品这里都是精品| 在线不卡中文字幕| 91亚洲精品久久久蜜桃网站| 另类小说色综合网站| 亚洲成人在线网站| 日韩一区欧美小说| 国产精品高潮久久久久无| 久久久午夜精品理论片中文字幕| 91精品婷婷国产综合久久性色| 欧美日韩黄色影视| 宅男在线国产精品| 91精品在线观看入口| 欧美在线一区二区三区| 91久久精品一区二区三| 99视频在线精品| 99综合电影在线视频| 99精品欧美一区二区蜜桃免费 | 欧美三日本三级三级在线播放| 成人久久视频在线观看| 国产精品一区二区久久不卡| 黄一区二区三区| 成人永久aaa| www.亚洲人| 国产999精品久久久久久绿帽| 成人黄色av网站在线| 色综合天天综合| 欧美日韩一二区| 777亚洲妇女| 欧美老年两性高潮| 2023国产精品视频| 国产午夜精品久久久久久久| 国产精品高清亚洲| 亚洲电影中文字幕在线观看| 日韩电影免费在线观看网站| 精品一区二区在线看| 成人涩涩免费视频| 欧美性一级生活| 精品美女在线播放| 亚洲女同一区二区| 日韩av电影天堂| av亚洲精华国产精华精华| 欧美视频一区二区三区四区| 精品国产伦理网| 一区二区三区在线视频播放| 久久国内精品自在自线400部| 大尺度一区二区| 欧美精品高清视频| 国产欧美精品一区二区色综合朱莉| 亚洲人快播电影网| 美女看a上一区| 91成人在线免费观看| 久久久一区二区| 亚洲一级在线观看| 狠狠色丁香婷婷综合| 在线观看91精品国产入口| 久久久www成人免费毛片麻豆| 亚洲已满18点击进入久久| 精品亚洲aⅴ乱码一区二区三区| 97久久人人超碰| 久久久噜噜噜久久中文字幕色伊伊 | 一区二区欧美视频| 国产一区不卡在线| 日韩一区二区三区免费看| 亚洲精品视频在线| 波多野结衣91| 国产日产欧美一区二区视频| 七七婷婷婷婷精品国产| 欧美网站一区二区| 亚洲精品视频自拍| 91视频免费播放| 国产精品福利影院| 国产a久久麻豆| 欧美经典一区二区三区| 久久91精品久久久久久秒播| 欧美一区二区三区不卡| 日韩精品亚洲专区| 欧美日韩一区二区三区免费看 | 亚洲愉拍自拍另类高清精品| 99re热这里只有精品视频| 亚洲欧洲美洲综合色网| 五月婷婷久久综合| 欧美挠脚心视频网站| 日韩精品一二三| 欧美第一区第二区| 国内精品伊人久久久久av一坑 | 91官网在线免费观看| 一区二区三区视频在线看| 色悠悠亚洲一区二区| 亚洲宅男天堂在线观看无病毒| 在线观看中文字幕不卡| 爽爽淫人综合网网站| 日韩小视频在线观看专区| 激情小说亚洲一区| 国产精品视频麻豆| 色综合欧美在线视频区| 偷拍日韩校园综合在线| 日韩欧美在线123| 国产乱码一区二区三区| 中文字幕一区日韩精品欧美| 一本到不卡免费一区二区| 亚洲午夜电影网| 久久免费视频色| 欧美亚洲另类激情小说| 免费观看30秒视频久久| 亚洲国产精品传媒在线观看| 欧美性猛交一区二区三区精品| 久久激情五月激情| 一区二区三区欧美亚洲| 精品国产99国产精品| 99久久精品国产导航| 视频在线在亚洲| 亚洲婷婷综合久久一本伊一区| 欧美视频一区二区三区| 成人免费毛片嘿嘿连载视频| 天堂午夜影视日韩欧美一区二区| 国产亚洲一区二区在线观看| 欧美区在线观看| 色综合久久久久网| 国产精品亚洲综合一区在线观看| 一区二区三区美女视频| 国产婷婷色一区二区三区四区| 欧美性猛交xxxx乱大交退制版| 国产69精品久久777的优势| 丝袜国产日韩另类美女| 亚洲黄色小说网站| 国产精品视频yy9299一区| 日韩免费高清视频| 欧美午夜精品电影| 色婷婷国产精品久久包臀 | 国产成人综合亚洲网站| 日本女人一区二区三区| 爽爽淫人综合网网站 | 欧美韩日一区二区三区四区| 337p日本欧洲亚洲大胆精品| 91精品国产品国语在线不卡| 欧美亚洲另类激情小说| 色999日韩国产欧美一区二区| 成人av在线播放网址| 国产成人在线观看免费网站| 精品一区二区三区不卡| 精品一区二区在线免费观看| 美女一区二区在线观看| 免费人成在线不卡| 日韩电影一区二区三区四区| 午夜精品久久久久久不卡8050| 亚洲一线二线三线久久久| 亚洲三级理论片| 亚洲欧美综合在线精品| 中文字幕欧美国产| 亚洲精品亚洲人成人网在线播放| 一区二区中文字幕在线| 一区二区三区精品在线观看| 亚洲精品一二三区| 亚洲综合成人在线| 视频精品一区二区| 久久精品国产精品亚洲红杏| 久久99日本精品| 成人av综合在线| 亚洲欧洲精品天堂一级| 肉肉av福利一精品导航| 精品一区二区三区在线观看国产| 久久99精品久久久久久动态图| 国产麻豆精品视频| www.在线成人| 欧美日韩一区不卡| 久久青草国产手机看片福利盒子| 亚洲色图欧洲色图| 天天av天天翘天天综合网色鬼国产 | 亚洲一级二级在线| 国产一区二区影院| 色妞www精品视频| 337p亚洲精品色噜噜| 久久色.com| 亚洲亚洲人成综合网络| 精品一区二区三区在线观看| 91在线小视频| 精品日产卡一卡二卡麻豆| 日韩一区在线免费观看| 午夜一区二区三区在线观看| 久久99久久99精品免视看婷婷 | 成人一区二区视频| 欧美一区二区三区四区视频| 中文字幕一区二区在线观看| 另类的小说在线视频另类成人小视频在线 | 欧美xxxxxxxx| 一区二区三区**美女毛片| 国产河南妇女毛片精品久久久| 欧美性感一类影片在线播放| 国产欧美一区二区三区沐欲| 图片区小说区区亚洲影院| 成人av影视在线观看| 欧美电影免费观看高清完整版在线观看| 亚洲码国产岛国毛片在线| 国产91精品入口| 久久久久久久久久久久电影| 舔着乳尖日韩一区| 在线一区二区三区|