📄 aaos2.c
字号:
/****************************************************************************** SciTech Nucleus Graphics Architecture** Copyright (C) 1991-1998 SciTech Software, Inc.* All rights reserved.** ======================================================================* |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW|* | |* |This copyrighted computer code contains proprietary technology |* |owned by SciTech Software, Inc., located at 505 Wall Street, |* |Chico, CA 95928 USA (http://www.scitechsoft.com). |* | |* |The contents of this file are subject to the SciTech Nucleus |* |License; you may *not* use this file or related software except in |* |compliance with the License. You may obtain a copy of the License |* |at http://www.scitechsoft.com/nucleus-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. |* | |* |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW|* ======================================================================** Language: ANSI C* Environment: OS/2 32-bit** Description: OS specific Nucleus Graphics Architecture services for* the OS/2 operating system environments.*****************************************************************************/#include "pm_help.h"#define INCL_DOSERRORS#define INCL_DOS#define INCL_SUB#define INCL_VIO#define INCL_KBD#include <os2.h>/*---------------------------- Global Variables ---------------------------*/static HFILE hSDDHelp;static ulong outLen; /* Must not cross 64Kb boundary! */static ulong result; /* Must not cross 64Kb boundary! */static ibool haveRDTSC;/*-------------------------- Implementation -------------------------------*//****************************************************************************REMARKS:This function returns a pointer to the common graphics driver loaded in thehelper VxD. The memory for the VxD is shared between all processes viathe VxD, so that the VxD, 16-bit code and 32-bit code all see the samestate when accessing the graphics binary portable driver.****************************************************************************/GA_sharedInfo * NAPI GA_getSharedInfo( int device){ /* Initialise the PM library and connect to our runtime DLL's */ PM_init(); /* Open our helper device driver */ if (DosOpen(PMHELP_NAME,&hSDDHelp,&result,0,0, FILE_OPEN, OPEN_SHARE_DENYNONE | OPEN_ACCESS_READWRITE, NULL)) PM_fatalError("Unable to open SDDHELP$ helper device driver!"); outLen = sizeof(result); DosDevIOCtl(hSDDHelp,PMHELP_IOCTL,PMHELP_GETSHAREDINFO, NULL, 0, NULL, &result, outLen, &outLen); DosClose(hSDDHelp); if (result) { /* We have found the shared Nucleus packet. Because not all processes * map to SDDPMI.DLL, we need to ensure that we connect to this * DLL so that it gets mapped into our address space (that is * where the shared Nucleus packet is located). Simply doing a * DosLoadModule on it is enough for this. */ HMODULE hModSDDPMI; char buf[80]; DosLoadModule((PSZ)buf,sizeof(buf),(PSZ)"SDDPMI.DLL",&hModSDDPMI); } return (GA_sharedInfo*)result;}/****************************************************************************REMARKS:Nothing special for this OS.****************************************************************************/ibool NAPI GA_getSharedExports( GA_exports *gaExp){ (void)gaExp; return false;}/****************************************************************************REMARKS:This function initialises the high precision timing functions for theNucleus loader library.****************************************************************************/ibool NAPI GA_TimerInit(void){ if (_GA_haveCPUID() && (_GA_getCPUIDFeatures() & CPU_HaveRDTSC) != 0) haveRDTSC = true; return true;}/****************************************************************************REMARKS:This function reads the high resolution timer.****************************************************************************/void NAPI GA_TimerRead( GA_largeInteger *value){ if (haveRDTSC) _GA_readTimeStamp(value); else DosTmrQueryTime((QWORD*)value);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -