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

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

?? dalcwdde.c

?? 此代碼為WCE5.0下顯示器的源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
//
// 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.
//
/****************************************************************************\
*
*  Module Name    dalcwdde.c
*  Project        ATI Display Abstraction Layer
*  Device         RageProPNP / Rage128 (Win95/98 & WinNT 4.0/5.0)
*
*  Description    source file for Display Abstraction Layer 0.87
*                 contains functions for processing CWDDE Extensions
*
*  Copyright (c) 1998-2002 ATI Technologies Inc. (unpublished)
*
*  All rights reserved.  This notice is intended as a precaution against
*  inadvertent publication and does not imply publication or any waiver
*  of confidentiality.  The year included in the foregoing notice is the
*  year of creation of the work.
*
*  Refer to DAL Developers Guide & Programming Reference Rev 0.87 for usage
*
\****************************************************************************/

#include "dal.h"
#include "daldef.h"
#include "dalddc.h"
#include "cwddedi.h"
#include "cwddemm.h"
#include "cwddeth.h"
#include "atimcode.h"

typedef CWDDECMD FAR *LPCWDDECMD;

const DAL_GDOGCO_ADJUSTMENT aGCO_Adjustment[] = 
  {//*********** ulHook ***************************Hookindex**
   { GCO_HOOK_TEXT_CURSOR_BLINKING_ADJUSTMENT       , 0 },
   { GCO_HOOK_RATIOMETRIC_EXPANSION_ADJUSTMENT      , 0 },
   { GCO_HOOK_OVERLAY_CHROMACITY_ADJUSTMENT         , 0 },
   { GCO_HOOK_OVERLAY_BLACKWHITELEVEL_ADJUSTMENT    , 0 }
};


//
// DALCWDDE.C - functions are declared locally only since no other files in
//              DAL include the CWDDE header files
//


ULONG DALCWDDE_AdapterSetPowerState(LPHW_DAL_EXTENSION   lpHDE,
                                    ULONG                ulDriverID,
                                    BOOL                 bNewRequest,
                                    DI_POWERSETTING FAR *lpPowerSetting);

ULONG DALCWDDE_ControllerValidateConfig(LPHW_DAL_EXTENSION lpHDE,
                                        ULONG ulDriverID,
                                        LPCWDDECMD lpCmd,
                                        CONTROLLERCONFIG FAR *lpControllerConfig,
                                        ULONG ulConfigCount);

ULONG DALCWDDE_ControllerSetConfig(LPHW_DAL_EXTENSION lpHDE,
                                   ULONG ulDriverID,
                                   LPCWDDECMD lpCmd,
                                   CONTROLLERCONFIG FAR *lpControllerConfig,
                                   ULONG ulConfigCount);

ULONG DALCWDDE_ControllerEnumNextView(LPHW_DAL_EXTENSION lpHDE,
                                      LPDAL_MODEINFO FAR *lplpDalMode,
                                      CONTROLLERVIEW FAR *lpControllerView,
                                      ULONG ulController, ULONG ulDisplays);

ULONG DALCWDDE_ControllerEnumNextRefresh(LPHW_DAL_EXTENSION lpHDE,
                                         LPDAL_MODEINFO FAR *lplpDalMode,
                                         CONTROLLERENUMREFRESH FAR * lpEnumRefresh,
                                         ULONG FAR *lpRefresh, ULONG ulController);


ULONG DALCWDDE_DisplayGetCaps(LPHW_DAL_EXTENSION lpHDE, LPDEVGDO lpDisplay);
ULONG DALCWDDE_DisplayGetInfo(LPHW_DAL_EXTENSION lpHDE, LPCWDDECMD lpCmd,
                  LPVOID lpOutput);

ULONG DALCWDDE_DisplayGetConfig(LPHW_DAL_EXTENSION lpHDE, LPCWDDECMD lpCmd,
                LPVOID lpOutput);

ULONG DALCWDDE_DisplaySetConfig(LPHW_DAL_EXTENSION lpHDE, LPCWDDECMD lpCmd,
                LPVOID lpInput);

ULONG DALCWDDE_AdapterFlushData(LPHW_DAL_EXTENSION lpHDE, ULONG ulDriverID,
                                SAVEDATA FAR *lpSaveData);

ULONG DALCWDDE_DisplaySetLimits(LPHW_DAL_EXTENSION lpHDE,LPCWDDECMD lpCmd,
                                DISPLAYLIMITS FAR *lpDisplaySetLimits);


ULONG DALCWDDE_DisplayGetDDCInfo(LPHW_DAL_EXTENSION lpHDE, LPCWDDECMD lpCmd,
                                 LPVOID lpOutput);


ULONG DALCWDDE_MM(HDAL hDAL, LPVOID lpInput, ULONG ulInputSize, LPVOID lpOutput,
                  ULONG ulOutputSize, LPLONG lpInfoSize);


ULONG DALCWDDE_DisplaySetRefreshRate(LPHW_DAL_EXTENSION lpHDE, LPCWDDECMD lpCmd, DISPLAYREFRESHRATE FAR *lpDisplayRefreshRate );

ULONG DALCWDDE_DisplayGetRefreshRate(LPHW_DAL_EXTENSION lpHDE, LPCWDDECMD lpCmd, LPVOID lpOutput);

ULONG DALCWDDE_DisplayGetRefreshRateCaps(LPHW_DAL_EXTENSION lpHDE, LPCWDDECMD lpCmd, LPVOID lpOutput);

static ULONG ulGetAdapterDefaultSetting(
  LPHW_DAL_EXTENSION  lpHDE,
  ULONG               ulDriverIndex,
  ULONG               ulOutputSize,
  ADAPTERSETTING FAR* lpAdapterSetting);

static ULONG 
ulGetDisplayAdjustmentIndex(
  ULONG              ulAdjustType);

static ULONG 
ulGetDisplayAdjustmentInfo(
  LPHW_DAL_EXTENSION lpHDE, 
  LPDEVGDO           lpDisplay, 
  ULONG              ulAdjustType, 
  LPHW_ADJUSTMENT    lpAdjustment);

static ULONG 
ulGetDisplayAdjustmentData(
  LPHW_DAL_EXTENSION lpHDE, 
  LPDEVGDO           lpDisplay, 
  ULONG              ulAdjustType, 
  LPLONG             lpData);

static ULONG 
ulSetDisplayAdjustmentData(
  LPHW_DAL_EXTENSION lpHDE, 
  LPDEVGDO           lpDisplay, 
  ULONG              ulAdjustType, 
  LONG               lData);

static ULONG ulGetAdapterConfig(
  LPHW_DAL_EXTENSION  lpHDE,
  ULONG               ulConfig,
  LPULONG             lpulValue);

static ULONG ulSetAdapterConfig(
  LPHW_DAL_EXTENSION  lpHDE,
  ULONG               ulConfig,
  ULONG               ulValue);

static ULONG DALCWDDE_DisplayGetEDIDData(
  LPHW_DAL_EXTENSION        lpHDE,
  CWDDECMD             FAR *lpCmd,
  DISPLAYEDIDDATAINPUT FAR *lpOption,
  DISPLAYEDIDDATA      FAR *lpEDIDData);

static ULONG DALCWDDE_AdapterSetClockConfig(
  LPHW_DAL_EXTENSION lpHDE,
  DI_ADAPTERCLOCK_CONFIG FAR *lpDiAdapterClkCfg);

/******************************Public*Routine******************************\
*
* BOOL DALCWDDE()
*
* Processes the Common Windows Display Driver Extensions (Display Interface)
* function calls, with adapter, controller, or display escape calls.
*
* Note:
*
\**************************************************************************/

ULONG DALCWDDE(
HDAL hDAL,
LPVOID lpInput,
ULONG ulInputSize,
LPVOID lpOutput,
ULONG ulOutputSize,
LPLONG lpInfoSize)
{
  LPHW_DAL_EXTENSION  lpHDE;
  LPCWDDECMD          lpCmd;
  ULONG               ulReturn;
  ULONG               i, j;

  DALDEBUG((DALDBG_ENTRY_EXIT, "DALCWDDE - Entry"));
  DALASSERT((hDAL != NULL), "DAL handle 'hDAL' is NULL!");

  // grab the structure for the DAL out of the DDL's handle to it
  lpHDE = (LPHW_DAL_EXTENSION)hDAL;
  ulReturn = (ULONG)CWDDE_OK;

  if (ulInputSize < sizeof(CWDDECMD))
  {
    // size of the input structure is smaller than the size of the CWDDE
    // command block and hence the DAL cannot process the call.

    ulReturn = (ULONG)CWDDE_ERR_BADINPUTSIZE;
    goto DALCWDDE_Return;
  }

  lpCmd = (LPCWDDECMD)lpInput;

  if (lpCmd->ulDriverReserved >= MAX_NUMBER_CONTROLLERS)
  {
    // caller provided an invalid value for the DriverID in the reserved
    // field of the CWDDE command block, hence fail the call.

    ulReturn = (ULONG)CWDDE_ERR_BADINPUT;
    goto DALCWDDE_Return;
  }

  switch(lpCmd->ulEscape32)
  {
    case CWDDEDI_AdapterGetVersion:
      {
        OUTPUTULONG FAR *lpOutputUlong;

        // used to return the version of the CWDDE API Extensions API support
        // which is CWDDEDI_VERSION from the CWDDE header file.

        if (ulOutputSize < sizeof(OUTPUTULONG))
        {
          // cannot return the version because there is insufficient room in
          // the output buffer for a OUTPUTULONG.

          ulReturn = CWDDE_ERR_BADOUTPUTSIZE;
        } else
        {
          // Return version number as defined in cwddedi.h:
          // the version should always come directly from the header file and
          // not be hardcoded by the developer!

          lpOutputUlong          = (OUTPUTULONG FAR *) lpOutput;
          lpOutputUlong->ulSize  = sizeof(OUTPUTULONG);
          lpOutputUlong->ulValue = CWDDEDI_VERSION;
        }
      }
      *lpInfoSize = sizeof(OUTPUTULONG);
      break;

    case CWDDEDI_AdapterGetCaps:

      // returns the capabilities of the adapter, hence the capabilities of
      // the one or more controllers.

      {
        ADAPTERCAPS FAR *lpAdapterCaps;
        LPDEVGCO         lpController;

        if (ulOutputSize < sizeof(ADAPTERCAPS))
        {
          // cannot return the version because there is insufficient room in
          // the output buffer for an ADAPTERCAPS structure

          ulReturn = CWDDE_ERR_BADOUTPUTSIZE;
        } else
        {
          lpAdapterCaps = (ADAPTERCAPS FAR *) lpOutput;
          lpAdapterCaps->ulSize = sizeof(ADAPTERCAPS);
          lpAdapterCaps->ulAdapterID = (ULONG) *((LPULONG) &hDAL);    // EPR 35062
          lpAdapterCaps->ulNumControllers = lpHDE->ulControllersCount;
          lpAdapterCaps->ulNumDisplays = lpHDE->ulDisplaysCount;

          // poll each controller to see if it supports overlay.
          lpAdapterCaps->ulNumOverlays = 0;
          for (i = 0; i < lpHDE->ulControllersCount; i++)
          {
            lpController = (LPDEVGCO) &lpHDE->aControllers[i];
            if (lpController->lpHWED->aControllerCaps[i] & DAL_CONTROLLER_CAPS_OVERLAY)
              lpAdapterCaps->ulNumOverlays += 1;
          }

          lpAdapterCaps->ulCaps = 0;
          if (  (GCO_HOOK2_VALIDATEMODE & lpHDE->aControllers[0].lpHWED->ulFunctionHooks2)
              &&(lpHDE->aControllers[0].lpHWED->pfnValidateMode                          ))
          {
            lpAdapterCaps->ulCaps |= CWDDEDI_ADAPTER_CAPS_SUPPORTREGISTRYDETAILEDTIMING;

            if (lpHDE->ulControllersCount > 1)
            {
              lpAdapterCaps->ulCaps |= CWDDEDI_ADAPTER_CAPS_SUPPORTLARGEDESKTOP;
            }
          }

          // force these values to zero in case the caller is trying to read
          // so information out of these in a future version and we do not
          // support that future version.
          lpAdapterCaps->ulReserved2 = 0;
          lpAdapterCaps->ulReserved3 = 0;
        }
      }
      *lpInfoSize = sizeof(ADAPTERCAPS);
      break;

    case CWDDEDI_AdapterGetInfo:

      // returns information about the adapter ... at present, only the
      // connected displays are required.

      {
        ADAPTERINFO FAR *lpAdapterInfo;

        if (ulOutputSize < sizeof(ADAPTERINFO))
        {
          // cannot return the version because there is insufficient room in
          // the output buffer for an ADAPTERCAPS structure

          ulReturn = CWDDE_ERR_BADOUTPUTSIZE;
        } else
        {
          lpAdapterInfo = (ADAPTERINFO FAR *) lpOutput;
          lpAdapterInfo->ulSize = sizeof(ADAPTERINFO);

          if (lpHDE->ulDalRule1 & DALRULE1_DISABLECWDDEDETECTION)
          {
            // Since the INF suggests not to do the detection return
            // from dal stored data. Warning : This flag will limit
            // device detection to boot time only.
            lpAdapterInfo->ulDisplaysHaveLoad = lpHDE->ulConnectedDisplays;
          }
          else
          {
            if (lpHDE->ulFlags & HDAL_INITIALIZING)
            {
             lpAdapterInfo->ulDisplaysHaveLoad = lpHDE->ulConnectedDisplays;
            }
            else
            {           
              lpAdapterInfo->ulDisplaysHaveLoad = ulDetectConnectedDisplays(lpHDE);

              // Save the current detected displays in DAL. This is needed
              // when saving object map on a detection scheme.
              lpHDE->ulConnectedDisplays = lpAdapterInfo->ulDisplaysHaveLoad;

        			// Update connected displays in BIOS Scratch Registers
              // Do not update CMOS
              vUpdateBIOSDisplayInfo(lpHDE, TRUE, FALSE);
            }
          }

          lpAdapterInfo->ulHotPluggableDisplays = lpHDE->ulHotPlaggableDisplays;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频一区在线观看| 国产精品拍天天在线| 欧美大片在线观看一区| 日韩一区二区三区视频在线观看| 欧美三级视频在线播放| 精品欧美一区二区久久| 国产成人av一区二区| 午夜一区二区三区在线观看| 视频一区二区三区在线| 韩国女主播一区二区三区| 国产suv一区二区三区88区| 91视频.com| 中文字幕在线不卡一区| 亚洲欧美国产三级| 日本大胆欧美人术艺术动态| 国产成人av福利| 欧美精品v日韩精品v韩国精品v| 欧美一区二区三区在线视频| 国产精品久久看| 日本免费新一区视频| 成人性色生活片免费看爆迷你毛片| 色偷偷成人一区二区三区91| 久久久综合精品| 午夜精品免费在线| 成人理论电影网| 欧美大片免费久久精品三p| 亚洲麻豆国产自偷在线| 久久99精品久久久| 4438x成人网最大色成网站| 国产精品久久久一区麻豆最新章节| 亚洲国产视频一区| 日本高清不卡视频| 国产精品乱人伦| 成人夜色视频网站在线观看| 欧美一区二区成人| 亚洲综合999| 99精品视频在线免费观看| 国产色综合一区| 国产在线精品国自产拍免费| 日韩一区国产二区欧美三区| 日韩精品一级二级| 欧美色倩网站大全免费| 亚洲日韩欧美一区二区在线| 国产成人av电影在线观看| 久久理论电影网| 极品少妇xxxx精品少妇偷拍| 日韩视频一区二区在线观看| 蜜臀av性久久久久av蜜臀妖精| 欧美高清视频在线高清观看mv色露露十八| 综合激情成人伊人| 久久久久久久久99精品| 精品一区二区在线播放| 久久久久久久久蜜桃| 波多野结衣一区二区三区| 中文字幕在线观看一区二区| 色婷婷综合久久久久中文 | 国产精品白丝av| 国产精品美女久久福利网站| 成人18视频日本| 亚洲电影一区二区三区| 欧美福利视频一区| 激情深爱一区二区| 国产精品国产三级国产aⅴ中文 | 色哟哟国产精品| 丝袜美腿成人在线| 欧美国产一区二区| 色综合中文字幕| 蜜臀91精品一区二区三区| 久久久久久久久一| 欧美日韩日日骚| 国产不卡一区视频| 亚洲网友自拍偷拍| 精品国产乱码久久久久久老虎| 亚洲欧美日韩久久| 欧美三级蜜桃2在线观看| 久久精品国产精品青草| 亚洲私人影院在线观看| 欧美一区二区三区视频免费 | 色综合久久久久久久久久久| 欧美a级一区二区| 亚洲免费av在线| 久久精品夜色噜噜亚洲a∨| 欧美美女网站色| 在线观看国产精品网站| 91免费看`日韩一区二区| 国产很黄免费观看久久| 日本在线观看不卡视频| 一区二区日韩av| 国产精品久久久久久久久久久免费看| 欧美一二三四区在线| 欧美日本在线看| 欧美色男人天堂| 欧美日韩美少妇| 色综合色狠狠天天综合色| 成人免费视频免费观看| 国产麻豆9l精品三级站| 国产成人av一区二区三区在线观看| 捆绑紧缚一区二区三区视频| 蜜臀99久久精品久久久久久软件| 日韩精品国产欧美| 亚洲18女电影在线观看| 午夜免费欧美电影| 性感美女极品91精品| 一区二区三区在线不卡| 中文字幕在线不卡视频| 6080日韩午夜伦伦午夜伦| 欧美色视频在线| 欧美日韩一级片在线观看| 欧美性色欧美a在线播放| 欧洲亚洲精品在线| heyzo一本久久综合| 国产不卡高清在线观看视频| 国产福利精品导航| 成人小视频在线| 97se亚洲国产综合自在线| 99久久国产免费看| 在线观看区一区二| 欧美另类高清zo欧美| 欧美一区二区日韩一区二区| 精品久久人人做人人爱| 91污在线观看| 久久综合精品国产一区二区三区| 色综合久久天天| 91精品综合久久久久久| 欧美一级日韩免费不卡| 久久精品视频免费| 日韩和欧美一区二区| 久久成人久久爱| 91免费在线视频观看| 色综合天天综合网天天狠天天| 91久久香蕉国产日韩欧美9色| 在线观看不卡一区| 精品黑人一区二区三区久久| 日韩伦理av电影| 蜜桃av一区二区三区| 91在线云播放| 91精品一区二区三区久久久久久| 欧美激情一区三区| 日本不卡一区二区三区| www.激情成人| 久久蜜桃一区二区| 一区二区三区欧美在线观看| 久久精品国内一区二区三区| 色婷婷国产精品久久包臀| 精品国产亚洲在线| 国产精品久久久久久久久久久免费看| 亚洲国产精品人人做人人爽| 国产成人免费视| 欧美一区二区三区男人的天堂| 亚洲女厕所小便bbb| 国产高清在线精品| 欧美一级国产精品| 久久九九久久九九| 国产精品超碰97尤物18| 一级精品视频在线观看宜春院| 国产精品亚洲午夜一区二区三区| aaa欧美日韩| 国产精品进线69影院| 国产精品456露脸| www久久精品| 国产一区二区三区美女| 日韩欧美国产三级电影视频| 午夜不卡av免费| 日本精品一级二级| 亚洲人成人一区二区在线观看| 成人精品一区二区三区四区| 久久人人爽人人爽| 国产高清在线观看免费不卡| 久久免费电影网| 成人在线视频一区| 精品粉嫩超白一线天av| 韩国av一区二区三区在线观看| 欧美一区二区三区在线视频| 日韩av中文字幕一区二区| 精品国一区二区三区| 国内精品不卡在线| 午夜国产精品一区| 欧美一三区三区四区免费在线看| 免费观看成人av| 欧美大片日本大片免费观看| 国产九色sp调教91| 一区二区三区欧美日韩| 欧美精品高清视频| 懂色av中文一区二区三区| 国产精品国产自产拍高清av| 欧美色综合网站| 精品写真视频在线观看| 亚洲色图19p| 日韩一级二级三级精品视频| 成人天堂资源www在线| 亚洲6080在线| 中文字幕一区二区不卡 | 国产欧美精品区一区二区三区 | 91国偷自产一区二区三区成为亚洲经典 | 久久精品视频一区二区三区| 在线观看亚洲一区| 国产一本一道久久香蕉| 亚洲综合一区二区三区| 国产亚洲自拍一区| 日韩视频免费观看高清完整版在线观看|