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

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

?? pm.c

?? uboot for K9 AT91RM9200 學習板
?? C
?? 第 1 頁 / 共 4 頁
字號:
/******************************************************************************                   SciTech OS Portability Manager Library**  ========================================================================**    The contents of this file are subject to the SciTech MGL Public*    License Version 1.0 (the "License"); you may not use this file*    except in compliance with the License. You may obtain a copy of*    the License at http://www.scitechsoft.com/mgl-license.txt**    Software distributed under the License is distributed on an*    "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or*    implied. See the License for the specific language governing*    rights and limitations under the License.**    The Original Code is Copyright (C) 1991-1998 SciTech Software, Inc.**    The Initial Developer of the Original Code is SciTech Software, Inc.*    All Rights Reserved.**  ========================================================================** Language:     ANSI C* Environment:  Win32** Description:  Implementation for the OS Portability Manager Library, which*               contains functions to implement OS specific services in a*               generic, cross platform API. Porting the OS Portability*               Manager library is the first step to porting any SciTech*               products to a new platform.*****************************************************************************/#define WIN32_LEAN_AND_MEAN#define STRICT#include <windows.h>#include <mmsystem.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <direct.h>#include "pmapi.h"#include "drvlib/os/os.h"#include "pm_help.h"/*--------------------------- Global variables ----------------------------*/ibool           _PM_haveWinNT;      /* True if we are running on NT     */static uint     VESABuf_len = 1024; /* Length of the VESABuf buffer     */static void     *VESABuf_ptr = NULL;/* Near pointer to VESABuf          */static uint     VESABuf_rseg;       /* Real mode segment of VESABuf     */static uint     VESABuf_roff;       /* Real mode offset of VESABuf      */HANDLE          _PM_hDevice = NULL; /* Handle to Win32 VxD              */static ibool    inited = false;     /* Flags if we are initialised      */static void     (PMAPIP fatalErrorCleanup)(void) = NULL;static char *szMachineNameKey   = "System\\CurrentControlSet\\control\\ComputerName\\ComputerName";static char *szMachineNameKeyNT = "System\\CurrentControlSet\\control\\ComputerName\\ActiveComputerName";static char *szMachineName      = "ComputerName";/*----------------------------- Implementation ----------------------------*//* Macro to check for a valid, loaded version of PMHELP. We check this * on demand when we need these services rather than when PM_init() is * called because if we are running on DirectDraw we don't need PMHELP.VXD. */#define CHECK_FOR_PMHELP()                                                  \{                                                                           \    if (_PM_hDevice == INVALID_HANDLE_VALUE)                                \	if (_PM_haveWinNT)                                                  \	    PM_fatalError("Unable to connect to PMHELP.SYS or SDDHELP.SYS!"); \	else                                                                  \	    PM_fatalError("Unable to connect to PMHELP.VXD or SDDHELP.VXD!"); \}/****************************************************************************REMARKS:Initialise the PM library and connect to our helper device driver. If wecannot connect to our helper device driver, we bail out with an errormessage. Our Windows 9x VxD is dynamically loadable, so it can be loadedafter the system has started.****************************************************************************/void PMAPI PM_init(void){    DWORD   inBuf[1];   /* Buffer to receive data from VxD  */    DWORD   outBuf[1];  /* Buffer to receive data from VxD  */    DWORD   count;      /* Count of bytes returned from VxD */    char    cntPath[PM_MAX_PATH];    char    *env;    /* Create a file handle for the static VxD if possible, otherwise     * dynamically load the PMHELP helper VxD. Note that if an old version     * of SDD is loaded, we use the PMHELP VxD instead.     */    if (!inited) {	/* Determine if we are running under Windows NT or not and	 * set the global OS type variable.	 */	_PM_haveWinNT = false;	if ((GetVersion() & 0x80000000UL) == 0)	    _PM_haveWinNT = true;	___drv_os_type = (_PM_haveWinNT) ? _OS_WINNT : _OS_WIN95;	/* Now try to connect to SDDHELP.VXD or SDDHELP.SYS */	_PM_hDevice = CreateFile(SDDHELP_MODULE_PATH, 0,0,0, CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE, 0);	if (_PM_hDevice != INVALID_HANDLE_VALUE) {	    if (!DeviceIoControl(_PM_hDevice, PMHELP_GETVER32, NULL, 0,		    outBuf, sizeof(outBuf), &count, NULL) || outBuf[0] < PMHELP_VERSION) {		/* Old version of SDDHELP loaded, so use PMHELP instead */		CloseHandle(_PM_hDevice);		_PM_hDevice = INVALID_HANDLE_VALUE;		}	    }	if (_PM_hDevice == INVALID_HANDLE_VALUE) {	    /* First try to see if there is a currently loaded PMHELP driver.	     * This is usually the case when we are running under Windows NT/2K.	     */	    _PM_hDevice = CreateFile(PMHELP_MODULE_PATH, 0,0,0, CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE, 0);	    if (_PM_hDevice == INVALID_HANDLE_VALUE) {		/* The driver was not staticly loaded, so try creating a file handle		 * to a dynamic version of the VxD if possible. Note that on WinNT/2K we		 * cannot support dynamically loading the drivers.		 */		_PM_hDevice = CreateFile(PMHELP_VXD_PATH, 0,0,0, CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE, 0);		}	    }	if (_PM_hDevice != INVALID_HANDLE_VALUE) {	    /* Call the driver to determine the version number */	    if (!DeviceIoControl(_PM_hDevice, PMHELP_GETVER32, inBuf, sizeof(inBuf),		    outBuf, sizeof(outBuf), &count, NULL) || outBuf[0] < PMHELP_VERSION) {		if (_PM_haveWinNT)		    PM_fatalError("Older version of PMHELP.SYS found!");		else		    PM_fatalError("Older version of PMHELP.VXD found!");		}	    /* Now set the current path inside the VxD so it knows what the	     * current directory is for loading Nucleus drivers.	     */	    inBuf[0] = (ulong)PM_getCurrentPath(cntPath,sizeof(cntPath));	    if (!DeviceIoControl(_PM_hDevice, PMHELP_SETCNTPATH32, inBuf, sizeof(inBuf), outBuf, sizeof(outBuf), &count, NULL))		PM_fatalError("Unable to set VxD current path!");	    /* Now pass down the NUCLEUS_PATH environment variable to the device	     * driver so it can use this value if it is found.	     */	    if ((env = getenv("NUCLEUS_PATH")) != NULL) {		inBuf[0] = (ulong)env;		if (!DeviceIoControl(_PM_hDevice, PMHELP_SETNUCLEUSPATH32, inBuf, sizeof(inBuf), outBuf, sizeof(outBuf), &count, NULL))		    PM_fatalError("Unable to set VxD Nucleus path!");		}	    /* Enable IOPL for ring-3 code by default if driver is present */	    if (_PM_haveWinNT)		PM_setIOPL(3);	    }	/* Indicate that we have been initialised */	inited = true;	}}/****************************************************************************REMARKS:We do have BIOS access under Windows 9x, but not under Windows NT.****************************************************************************/int PMAPI PM_setIOPL(    int iopl){    DWORD       inBuf[1];   /* Buffer to receive data from VxD  */    DWORD       outBuf[1];  /* Buffer to receive data from VxD  */    DWORD       count;      /* Count of bytes returned from VxD */    static int  cntIOPL = 0;    int         oldIOPL = cntIOPL;    /* Enable I/O by adjusting the I/O permissions map on Windows NT */    if (_PM_haveWinNT) {	CHECK_FOR_PMHELP();	if (iopl == 3)	    DeviceIoControl(_PM_hDevice, PMHELP_ENABLERING3IOPL, inBuf, sizeof(inBuf),outBuf, sizeof(outBuf), &count, NULL);	else	    DeviceIoControl(_PM_hDevice, PMHELP_DISABLERING3IOPL, inBuf, sizeof(inBuf),outBuf, sizeof(outBuf), &count, NULL);	cntIOPL = iopl;	return oldIOPL;	}    /* We always have IOPL on Windows 9x */    return 3;}/****************************************************************************REMARKS:We do have BIOS access under Windows 9x, but not under Windows NT.****************************************************************************/ibool PMAPI PM_haveBIOSAccess(void){    if (PM_getOSType() == _OS_WINNT)	return false;    else	return _PM_hDevice != INVALID_HANDLE_VALUE;}/****************************************************************************REMARKS:Return the operating system type identifier.****************************************************************************/long PMAPI PM_getOSType(void){    if ((GetVersion() & 0x80000000UL) == 0)	return ___drv_os_type = _OS_WINNT;    else	return ___drv_os_type = _OS_WIN95;}/****************************************************************************REMARKS:Return the runtime type identifier.****************************************************************************/int PMAPI PM_getModeType(void){    return PM_386;}/****************************************************************************REMARKS:Add a file directory separator to the end of the filename.****************************************************************************/void PMAPI PM_backslash(    char *s){    uint pos = strlen(s);    if (s[pos-1] != '\\') {	s[pos] = '\\';	s[pos+1] = '\0';	}}/****************************************************************************REMARKS:Add a user defined PM_fatalError cleanup function.****************************************************************************/void PMAPI PM_setFatalErrorCleanup(    void (PMAPIP cleanup)(void)){    fatalErrorCleanup = cleanup;}/****************************************************************************REMARKS:Report a fatal error condition and halt the program.****************************************************************************/void PMAPI PM_fatalError(    const char *msg){    if (fatalErrorCleanup)	fatalErrorCleanup();    MessageBox(NULL,msg,"Fatal Error!", MB_ICONEXCLAMATION);    exit(1);}/****************************************************************************REMARKS:Allocate the real mode VESA transfer buffer for communicating with the BIOS.****************************************************************************/void * PMAPI PM_getVESABuf(    uint *len,    uint *rseg,    uint *roff){    DWORD   outBuf[4];  /* Buffer to receive data from VxD  */    DWORD   count;      /* Count of bytes returned from VxD */    /* We require the helper VxD to be loaded staticly in order to support     * the VESA transfer buffer. We do not support dynamically allocating     * real mode memory buffers from Win32 programs (we need a 16-bit DLL     * for this, and Windows 9x becomes very unstable if you free the     * memory blocks out of order).     */    if (!inited)	PM_init();    if (!VESABuf_ptr) {	CHECK_FOR_PMHELP();	if (DeviceIoControl(_PM_hDevice, PMHELP_GETVESABUF32, NULL, 0,		outBuf, sizeof(outBuf), &count, NULL)) {	    if (!outBuf[0])		return NULL;	    VESABuf_ptr = (void*)outBuf[0];	    VESABuf_len = outBuf[1];	    VESABuf_rseg = outBuf[2];	    VESABuf_roff = outBuf[3];	    }	}    *len = VESABuf_len;    *rseg = VESABuf_rseg;    *roff = VESABuf_roff;    return VESABuf_ptr;}/****************************************************************************REMARKS:Check if a key has been pressed.****************************************************************************/int PMAPI PM_kbhit(void){    /* Not used in Windows */    return true;}/****************************************************************************REMARKS:Wait for and return the next keypress.****************************************************************************/int PMAPI PM_getch(void){    /* Not used in Windows */    return 0xD;}/****************************************************************************REMARKS:Set the location of the OS console cursor.****************************************************************************/void PM_setOSCursorLocation(    int x,    int y){    /* Nothing to do for Windows */    (void)x;    (void)y;}/****************************************************************************REMARKS:Set the width of the OS console.****************************************************************************/void PM_setOSScreenWidth(    int width,    int height){    /* Nothing to do for Windows */    (void)width;    (void)height;}/****************************************************************************REMARKS:Set the real time clock handler (used for software stereo modes).****************************************************************************/ibool PMAPI PM_setRealTimeClockHandler(    PM_intHandler ih,    int frequency){    /* We do not support this from Win32 programs. Rather the VxD handles     * this stuff it will take care of hooking the stereo flip functions at     * the VxD level.     */    (void)ih;    (void)frequency;    return false;}/****************************************************************************REMARKS:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av一区二区三区| 色综合天天在线| 亚洲制服丝袜一区| 亚洲欧美一区二区三区极速播放 | 亚洲区小说区图片区qvod| 久久久精品国产免大香伊| 精品捆绑美女sm三区| 精品国产凹凸成av人网站| 91精品国产乱码| 精品国产三级a在线观看| 精品久久国产老人久久综合| www国产成人| 国产精品素人一区二区| 亚洲免费毛片网站| 亚洲第一在线综合网站| 蜜芽一区二区三区| 国产资源精品在线观看| 成人avav在线| 欧美日韩久久久久久| 日韩一区二区三区电影在线观看| 欧美精品一区二区不卡| 国产精品国产自产拍高清av| 伊人夜夜躁av伊人久久| 五月婷婷另类国产| 国产在线播精品第三| 91亚洲永久精品| 欧美一区二区精品| 中文字幕色av一区二区三区| 亚洲国产va精品久久久不卡综合| 免费一级片91| jlzzjlzz欧美大全| 91精品国产aⅴ一区二区| 久久久久久影视| 亚洲专区一二三| 国产精品一区二区在线播放| 色8久久精品久久久久久蜜| 日韩美女一区二区三区四区| 国产精品女主播av| 日韩精品亚洲专区| 91麻豆免费视频| 欧美videossexotv100| 综合久久国产九一剧情麻豆| 麻豆精品国产91久久久久久| 91在线观看免费视频| 精品国内二区三区| 亚洲精品成a人| 国产精品一区二区视频| 欧美巨大另类极品videosbest | 粉嫩13p一区二区三区| 欧美日韩一区二区三区在线| 国产亚洲精品中文字幕| 日本在线不卡一区| 在线日韩一区二区| 国产精品网曝门| 国产曰批免费观看久久久| 91精品国产综合久久精品麻豆| 国产精品剧情在线亚洲| 韩国v欧美v日本v亚洲v| 日韩一区二区不卡| 午夜久久久久久| 在线观看91精品国产入口| 亚洲欧洲av在线| 大美女一区二区三区| 精品va天堂亚洲国产| 欧美aaa在线| 91麻豆精品国产91久久久久久久久| 国产精品成人免费在线| 成人免费看的视频| 国产偷国产偷亚洲高清人白洁| 久久精品国内一区二区三区| 欧美一级片在线看| 蜜臀99久久精品久久久久久软件 | 久久精品72免费观看| 欧美日韩精品二区第二页| 一区二区三区中文字幕电影| 99久久99久久精品免费观看| 国产精品素人一区二区| 91网页版在线| 一区二区激情视频| 欧洲人成人精品| 午夜久久久久久久久| 日韩一区二区三| 国产专区欧美精品| 国产肉丝袜一区二区| 成人av电影在线| 亚洲一区二区视频在线| 欧美亚洲一区二区在线观看| 午夜视频久久久久久| 日韩欧美的一区| 丰满放荡岳乱妇91ww| 亚洲欧美视频在线观看视频| 欧美日韩免费视频| 久久国内精品自在自线400部| 欧美一区二区大片| 国产乱子伦视频一区二区三区| 日本一区二区三区久久久久久久久不| 成人h动漫精品一区二区| 亚洲精品亚洲人成人网| 91精品国产综合久久久蜜臀图片| 激情国产一区二区 | 亚洲二区视频在线| 91精品国产综合久久婷婷香蕉| 久久99国产精品成人| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产在线精品一区二区三区不卡| 久久免费精品国产久精品久久久久| 成人一级黄色片| 五月天国产精品| 日本一区二区三区视频视频| 欧美在线不卡视频| 国产一区美女在线| 亚洲午夜久久久| 国产性天天综合网| 欧美丰满少妇xxxxx高潮对白| 国产成人自拍在线| 天天做天天摸天天爽国产一区| 久久久激情视频| 3751色影院一区二区三区| 国产成人av一区二区三区在线| 亚洲电影一区二区三区| 国产精品欧美经典| 欧美v国产在线一区二区三区| 日本精品免费观看高清观看| 国产精品亚洲一区二区三区妖精| 亚洲成人手机在线| 亚洲天堂av一区| 久久久亚洲精品一区二区三区| 欧美另类高清zo欧美| 91麻豆成人久久精品二区三区| 狂野欧美性猛交blacked| 亚洲国产精品久久不卡毛片 | 欧美日韩国产一区二区三区地区| 国产老女人精品毛片久久| 香蕉久久夜色精品国产使用方法| 国产精品久久久一本精品| 26uuuu精品一区二区| 91精品久久久久久久99蜜桃| 在线亚洲欧美专区二区| www.久久久久久久久| 丁香婷婷综合网| 国内精品久久久久影院色| 日韩精品一卡二卡三卡四卡无卡| 一区二区欧美视频| 亚洲一区免费观看| 亚洲精品欧美在线| 亚洲欧美日韩人成在线播放| 中文字幕欧美一区| 国产精品卡一卡二| 亚洲欧洲性图库| 国产精品久久久久一区二区三区 | 亚洲视频在线一区二区| 国产精品美女久久久久高潮| 国产欧美1区2区3区| 久久精品欧美日韩精品| 久久综合色天天久久综合图片| 亚洲精品在线观看网站| 精品免费国产一区二区三区四区| 欧美一级免费观看| 欧美va在线播放| 久久久久久99精品| 久久精品无码一区二区三区| 日本一区二区三区久久久久久久久不| 久久精子c满五个校花| 国产精品剧情在线亚洲| 一区二区三区四区亚洲| 亚洲伊人伊色伊影伊综合网| 天天影视网天天综合色在线播放| 蜜桃一区二区三区在线| 国产在线观看一区二区| 成人毛片老司机大片| 色噜噜狠狠成人网p站| 欧美午夜视频网站| 日韩欧美国产一二三区| 久久免费电影网| 亚洲日本成人在线观看| 日日夜夜精品免费视频| 国产精品一区二区在线看| 91影视在线播放| 欧美另类z0zxhd电影| 欧美电影免费观看高清完整版 | 免费成人av在线播放| 国产精品一区二区免费不卡 | 亚洲色图在线看| 日韩国产在线观看一区| 国产一区二区毛片| 色狠狠综合天天综合综合| 日韩欧美中文字幕制服| 亚洲欧美自拍偷拍| 日本午夜精品一区二区三区电影| 国产不卡在线一区| 7777精品伊人久久久大香线蕉的 | 亚洲乱码中文字幕综合| 日本欧美一区二区三区乱码| 成年人国产精品| 欧美一卡2卡三卡4卡5免费| 中文字幕亚洲欧美在线不卡| 免费观看日韩电影| 色综合天天狠狠| 国产欧美日韩久久| 蜜桃av一区二区|