⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dal.h

📁 此代码为WCE5.0下显示器的源代码
💻 H
📖 第 1 页 / 共 5 页
字号:
{
    ULONG ulData;

    // VideoPortReadRegisterBufferUchar(((LPUCHAR)p + r), (LPUCHAR) &ulData, sizeof(ULONG));
    return ulData;
}

//#define MMBAREADUSHORT(p,r) VideoPortReadRegisterUshort((LPUSHORT)((LPUCHAR)p + r))
__inline USHORT MMBAREADUSHORT(LPVOID p, ULONG r)
{
    USHORT ulData;

    // VideoPortReadRegisterBufferUchar(((LPUCHAR)p + r), (LPUCHAR) &ulData, sizeof(USHORT));
    return ulData;
}

#define MMBAREADUCHAR(p,r)           READ_REGISTER_UCHAR((LPUCHAR)((LPUCHAR)p + r))
#define MMBAREADBUFFER(p,r,d,l)     READ_REGISTER_BUFFER_UCHAR((LPUCHAR)p + r, (LPUCHAR)d, (ULONG)l)

#define SYNCEXECUTION(p,r,d,v)          //VideoPortSynchronizeExecution(p,r,d,v)
#define STALLEXECUTION(l)                   //VideoPortStallExecution(l)
#else 



// Defines for CE_BUILD ---------------------------------------------------------------------------------------------------------------------------------

#define COMPAREMEMORY(d,s,l)        memcmp((LPVOID)d, (LPVOID)s,(ULONG)l)
#define MOVEMEMORY(d,s,l)               memmove((LPVOID)d, (LPVOID)s, (ULONG)l)
#define WRITEREGUCHAR(d,s,l)           WRITE_REGISTER_BUFFER_UCHAR((PUCHAR)d, (PUCHAR)s,(ULONG)l)
#define READREGUCHAR(d,s,l)             READ_REGISTER_BUFFER_UCHAR((PUCHAR)d, (PUCHAR)s,(ULONG)l)
#define ZEROMEMORY(p,l)                   memset((p),0,(l))

#define IOREADULONG(p,r)                    READ_PORT_ULONG((LPULONG)p + r)
#define IOWRITEULONG(p,r,v)                 WRITE_PORT_ULONG(((LPULONG)p + r),v)
#define IOWRITEUCHAR(p,r,v)                 WRITE_PORT_UCHAR(((LPUCHAR)p + r),v)

#define MMREADULONG(p,r)                   READ_REGISTER_ULONG((LPULONG)p + r)
#define MMWRITEULONG(p,r,v)                WRITE_REGISTER_ULONG(((LPULONG)p + r),v)

//#define MMWRITEULONG(p,r,v)                WRITE_REGISTER_ULONG(((LPULONG) ((LPUCHAR)p + r) ),v)

#define MMWRITEUCHAR(p,r,v,n)               WRITE_REGISTER_UCHAR((LPUCHAR)((LPULONG)p+r)+n,v)
#define MMREADUCHAR(p,r,n)                  READ_REGISTER_UCHAR((LPUCHAR)((LPULONG)p+r)+n)

//for reading memory map bios area

//#define MMBAREADULONG(p,r) VideoPortReadRegisterUlong((LPULONG)((LPUCHAR)p + r))
__inline ULONG Aligned_MMBAREADULONG(LPVOID p, ULONG r)
{
    ULONG ulData[2];
    ULONG retVal;
    ULONG offset;
    ULONG invoffset;

    // read aligned DWORDs
    ulData[0] = READ_REGISTER_ULONG(  (LPULONG) p +r/sizeof(ULONG)  );
    ulData[1] = READ_REGISTER_ULONG(  (LPULONG) p +r/sizeof(ULONG) +1 );
    
    // calculate DWORD offset
    offset = (r%sizeof(ULONG));
    invoffset = sizeof(ULONG) - offset;

    retVal = ulData[0] << (8*offset);

    retVal+= ulData[1] >> (8*invoffset);
    
    return retVal;
}



//#define MMBAREADULONG(p,r) VideoPortReadRegisterUlong((LPULONG)((LPUCHAR)p + r))
__inline ULONG MMBAREADULONG(LPVOID p, ULONG r)
{
    ULONG ulData;

    ulData = READ_REGISTER_ULONG(  (LPULONG)( (LPUCHAR)p + r )  );
    return ulData;
}




//#define MMBAREADUSHORT(p,r) VideoPortReadRegisterUshort((LPUSHORT)((LPUCHAR)p + r))
__inline USHORT MMBAREADUSHORT(LPVOID p, ULONG r)
{
    USHORT ulData;

    ulData  = READ_REGISTER_USHORT(  (LPUSHORT)( ((LPUCHAR)p) + r )  );
    return ulData;
}

#define MMBAREADUCHAR(p,r)          READ_REGISTER_UCHAR((LPUCHAR)((LPUCHAR)p + r))

#define MMBAREADBUFFER(p,r,d,l) _MMBAREADBUFFER( ((LPUCHAR)p + r), (LPUCHAR)d, l)
__inline void _MMBAREADBUFFER(LPUCHAR p, LPUCHAR d, ULONG l)    
{
    while( l-- )
    *d++ = *(volatile UCHAR * const)p++;
 }


#define SYNCEXECUTION(p,r,d,v)          //VideoPortSynchronizeExecution(p,r,d,v)     // we don't need this in CE becuase we don't do DDC
//#define STALLEXECUTION(l)                  Sleep(l/1000)      // Microseconds

__inline void STALLEXECUTION(ULONG l) // l is in microseconds
{
    ULONG   ms;

    ms = (l+500)/1000;
    if ( ms == 0 )
        ms = 1;
    Sleep(ms);              // milliseonds
}

__inline void STALLEXECUTION_MS(ULONG ms) // l is in microseconds
{
    if ( ms == 0 )
        ms = 1;
    Sleep(ms);              // milliseonds
}

#endif // !CE_BUILD
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------
#endif /* WIN9X_BUILD */



/******************************Public*Definition*****************************\
*
* DAL FUNCTION PROTOTYPES
*
\****************************************************************************/

BOOL  DALAllocOverlay(HDAL hDAL, ULONG ulController, ULONG ulWidthBytes, ULONG ulHeight, ULONG ulOverlayType);
ULONG DALCWDDE(HDAL hDAL, LPVOID lpInput, ULONG ulInputSize, LPVOID lpOutput,
                   ULONG ulOutputSize, LPLONG lpInfoSize);

VOID  DALDisable(VOID);
VOID  DALDisableInstance(HDAL hDAL);
VOID  DALDisableDriverInstance(HDAL hDAL, ULONG ulDriverID, BOOL bPrimaryDriver);

BOOL  DALEnable(VOID);
BOOL  DALEnableInstance(HDAL hDAL, HDDL hDDL, ULONG ulDrivers, LPDALMEM lpaAdditionalMemSeg);
ULONG DALEnableDriverInstance(HDAL hDAL, ULONG ulDriverID);
ULONG DALResumeInstance(HDAL hDAL, ULONG ulDrivers, ULONG ulPowerState);

VOID  DALFreeOverlay(HDAL hDAL, ULONG ulController);
BOOL  DALQueryOverlayStatus(HDAL hDAL, ULONG ulController);
BOOL  DALGetDefaultMode(HDAL hDAL, ULONG ulDriverID, LPDEVMODE_INFO lpMI);

ULONG DALGetDPMS(HDAL hDAL);

VOID  DALUpdateObjectMap(HDAL hDAL, ULONG ulDriverID);
ULONG DALModifyMappedDisplays(HDAL hDAL, ULONG ulDriverID, ULONG ulController);
ULONG DALGetPrimaryControllerDisplayMap(HDAL hDAL); 

VOID  DALGetGammaCorrection(HDAL hDAL, ULONG ulDriverID, LPDEVCLUT lpaGamma);
VOID  DALGetGamma16Correction(HDAL hDAL, ULONG ulDriverID, LPDEVCLUT16 lpaGamma16);
ULONG DALGetGraphicsControllerInfo(HDAL hDAL, ULONG ulDriverID);
ULONG DALGetHDALSize(LPULONG lpulDALSize, LPDALMEM lpaAdditionalMemSeg);

BOOL  DALGetMode(HDAL hDAL, LPDEVMODE_INFO lpMI, LPRECT lprtView,
                 LPRECT lprtPanLock, ULONG ulController);
BOOL  DALGetModeVMI(HDAL hDAL, VIDEO_MODE_INFORMATION FAR * lpVMI,
                    ULONG ulDriverID);

ULONG DALGetModesAvailable(HDAL hDAL, ULONG ulDriverID, LPDEVMODE_INFO lpaMI,
                           ULONG ulModes);
ULONG DALGetModesAvailableVMI(HDAL hDAL, ULONG ulDriverID,
                              VIDEO_MODE_INFORMATION FAR *lpaVMI, ULONG ulModes);

ULONG DALGetNumberModesAvailable(HDAL hDAL, ULONG ulDriverID);

BOOL  DALShareModeTable(HDAL hDal, LPVOID lpModeTable, ULONG ulConnectedDisplays);
BOOL  DALUnShareModeTable(HDAL hDal, LPVOID lpModeTable, ULONG ulConnectedDisplays);

VOID  DALResetMode(HDAL hDAL, ULONG ulDriverID);
BOOL  DALGetDisplayEDID(HDAL hDAL, ULONG ulDriverID, ULONG ulDisplayIndex, LPUCHAR lpucQueryBuffer, ULONG ulLength);
VOID  DALSetDisplayDPMS(HDAL hDAL, ULONG ulDriverID, ULONG ulState, ULONG ulDisplayIndex);
VOID  DALVGASetDisplayDPMS(HDAL hDAL, ULONG ulDriverID, ULONG ulState, ULONG ulDisplayIndex);
VOID  DALSetDPMS(HDAL hDAL, ULONG ulState);
VOID  DALSetPowerState(HDAL hDAL, ULONG ulState);

ULONG DALGetGammaMode(HDAL hDAL, ULONG ulDriverID);
VOID  DALSetGammaMode(HDAL hDAL, ULONG ulDriverID, ULONG ulGammaMode);

VOID  DALSetGammaCorrection(HDAL hDAL, ULONG ulDriverID, LPDEVCLUT lpaGamma);
VOID  DALSetGamma16Correction(HDAL hDAL, ULONG ulDriverID, LPDEVCLUT16 lpaGamma16);

ULONG DALSetMode(HDAL hDAL, ULONG ulDriverID, LPDEVMODE_INFO lpMI, ULONG ulDisplayOffset,
                 ULONG ulDisplayPitch, BOOL bForce);

ULONG DALSetModeVMI(HDAL hDAL, ULONG ulDriverID, VIDEO_MODE_INFORMATION FAR *lpVMI,
                    BOOL bForce);

VOID  DALSetPalette(HDAL hDAL, ULONG ulDriverID, LPDEVCLUT lpPalette,
                    ULONG ulStart, ULONG ulLength);

BOOL DALSetAdjustmentTimings(LPHANDLE lpParameter, ULONG ulController, LPADJUSTMENT_PARAMETERS lpAdjustmentParameters);

ULONG ulDALDisplayGetEDID( HDAL hDAL, ULONG ulDisplayIndex, LPVOID lpEdidBuffer );

ULONG DALGetDisplaysPhysicallyConnected(HDAL hDAL, ULONG ulDriverID);
ULONG DALGetDisplaysActive(HDAL  hDAL, ULONG ulDriverID);

VOID DALModifyObjectMap(HDAL hDAL, 
                        ULONG ulDriverID, 
                        LPULONG lpaControllersMap, 
                        LPULONG lpaDisplays);

VOID DALEnableDDExclusiveMode(HDAL hDAL, ULONG ulDriverID) ;

VOID DALDisableDDExclusiveMode(HDAL hDAL, ULONG ulDriverID) ;

VOID DALSwitchFSDOSToWindows(HDAL hDAL, ULONG ulDriverID);

VOID DALSwitchWindowsToFSDOS(HDAL hDAL, ULONG ulDriverID);

ULONG DALGetNumberOfDrivers(HDAL hDAL);

ULONG DALGetDriverState(HDAL hDAL, ULONG ulDriverID);

/******************************Public*Definition*****************************\
*
* DDL FUNCTION PROTOTYPES
*
\****************************************************************************/

BOOL DDLBiosInt10(HDDL hDDL, PVIDEO_X86_BIOS_ARGUMENTS pBiosArguments);
VOID DDLDebugPrint(ULONG ulDebugLevel, LPCHAR lpDebugMessage, ...);

PFNGCOENABLE* DDLGetControllerObjects(HDDL hddl, LPULONG lpultotalcontrollerobjects);
PFNGDOENABLE* DDLGetDisplayObjects(HDDL hddl, LPULONG lpultotaldisplayobjects);

VOID DDLGetHwAsicID(HDDL hDDL, LPHW_ASIC_ID lpHwAsicID);

void mytest(void);

VOID  DDLEventNotification(HDDL hDDL, LPEVENTINFO lpEventInfo);

BOOL DDLGetRegistryParameters(HDDL hDDL, LPUCHAR  lpValueName, LPVOID lpValueData,
                              LPULONG lpuValueLength);
BOOL  DDLSetRegistryParameters(HDDL hDDL, LPUCHAR  lpValueName, LPVOID lpValueData,
                               ULONG uValueLength);

BOOL FAR DDLGetMonitorInfo(HDDL hDDL, LPMONITOR_INFO lpMonitorInfo);

ULONG FAR DDLGetRegistryPathName(HDDL hDDL, LPUCHAR lpPathName);

VOID FAR DDLRegisterAND(HDDL hDDL, ULONG ulOffset, ULONG ulMask);
VOID FAR DDLRegisterOR(HDDL hDDL, ULONG ulOffset, ULONG ulMask);

BOOL FAR DDLGetDriverInfo(HDDL hDDL, LPULONG lpDrivers);

ULONG FAR DDLGetDriverOptions(HDDL hDDL);

VOID FAR DDLGetAdapterID(HDDL hDDL, LPCHAR lpcDriverID);

BOOL FAR DDLGetDriversToLoad(HDDL hDDL, LPULONG lpDrivers, LPCHAR lpDeviceName);
BOOL FAR DDLShareModeTable(HDDL hDDL, LPVOID lpModeTable, ULONG ulConnectedDisplays);

ULONG FAR DDLReadCMOS(HDDL hDDL, ULONG ulCMOSAddress);
VOID FAR DDLWriteCMOS(HDDL hDDL, ULONG ulCMOSAddress, ULONG ulCMOSValue);

BOOL FAR DDLMessageCode(HDDL hDDL, ULONG ulDriverId, ULONG ulMessageCode, ULONG ulBufSize, LPVOID pvBuf);

#if defined(_X86_)
#pragma pack()
#endif

#ifdef __cplusplus
}
#endif

#endif /*_DAL_H*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -